It's Cow Game! Version 2.04!
67
NPCs/Beach/Ambrose/Ambrose.dialogue
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
~ start
|
||||
|
||||
if get_save_value("ambiQuestComplete", false):
|
||||
Ambrose: Meowdy!
|
||||
Ambrose: You can change the baskets out meow if you'd like.
|
||||
Ambrose: I just needed to see them in formation once :3
|
||||
Ambrose: Thank you myah.
|
||||
=> END
|
||||
|
||||
if not get_save_value("ambiQuestStarted", false):
|
||||
Ambrose: meoww could you help me set up the basket spots here?
|
||||
- sure => startQuest
|
||||
- sorry no => declineQuest
|
||||
|
||||
if not DialogueBoxManager.currentSpeaker.notes_check():
|
||||
Ambrose: Hi you uh need to find some of my notes still meow.
|
||||
if not DialogueBoxManager.currentSpeaker.note_check_1():
|
||||
Ambrose: I saw a page fly off towards the Snak Shak.
|
||||
if not DialogueBoxManager.currentSpeaker.note_check_2():
|
||||
Ambrose: I saw a page fly off towards the rocky island.
|
||||
if not DialogueBoxManager.currentSpeaker.note_check_3():
|
||||
Ambrose: I sensed that a page flew north and got stuck in a log.
|
||||
Ambrose: Good luck nyaa~
|
||||
=> END
|
||||
|
||||
~ checkRules
|
||||
if not DialogueBoxManager.currentSpeaker.rules_check():
|
||||
Ambrose: Hi I think something's not right meow.
|
||||
if not DialogueBoxManager.currentSpeaker.basket_rule_check_1():
|
||||
Ambrose: ummm maybe look at note 1 again.
|
||||
if not DialogueBoxManager.currentSpeaker.basket_rule_check_2():
|
||||
Ambrose: myaa I think note 2 needs to be looked at.
|
||||
if not DialogueBoxManager.currentSpeaker.basket_rule_check_3():
|
||||
Ambrose: meowww note 3 is a tricky one, it doesn't feel like the baskets follow it well enough.
|
||||
Ambrose: Good luck nyaa~
|
||||
=> END
|
||||
else:
|
||||
Ambrose: OwO it's perfect!!!
|
||||
Ambrose: Thank you so much!!!
|
||||
Ambrose: I will teach you my secret technique :3
|
||||
Ambrose: *Ambrose imbues you with a deep basketing secret*
|
||||
Ambrose: *You can now put an infinite amount of an item into a basket made from it*
|
||||
Ambrose: Have fun basketing meow!
|
||||
do set_save_value("ambiQuestComplete", true)
|
||||
do QuestManager.complete_quest("Constellation of Baskets")
|
||||
=> END
|
||||
|
||||
~ startQuest
|
||||
if not LevelManager.skill_check("basketWeaving", 22) or not LevelManager.skill_check("scavenging", 15):
|
||||
Ambrose: mmmyahh I think you need a little more practice first though. (Requires level 22 Basket Weaving and level 15 Scavenging)
|
||||
=> END
|
||||
Ambrose: Thank you! Here one moment I have some notes on how the baskets should be placed.
|
||||
Ambrose: [Dexterity DC 3] Result: 1
|
||||
Ambrose: *Ambrose fumbles with his pages and 3 of them fly off into the distance*
|
||||
do set_save_value("ambiQuestStarted", true)
|
||||
Ambrose: myaaaaaaahhhh oh no the pages all flew away!
|
||||
Ambrose: I saw one fly off towards the Snak Shak.
|
||||
Ambrose: And another go towards the rocky island.
|
||||
Ambrose: [Perception DC 15] Result: 20
|
||||
Ambrose: And I sense that a page flew north and got stuck in a log.
|
||||
Ambrose: Please go get them and set up the baskets for me myah.
|
||||
=> END
|
||||
|
||||
~ declineQuest
|
||||
Ambrose: Ok let me know if you have time later nyah~
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Ambrose/Ambrose.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://cyyl6ijg5du0k"
|
||||
path="res://.godot/imported/Ambrose.dialogue-70c169caccb9132e6e7d41ce0a57b22f.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ambrose/Ambrose.dialogue"
|
||||
dest_files=["res://.godot/imported/Ambrose.dialogue-70c169caccb9132e6e7d41ce0a57b22f.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
210
NPCs/Beach/Ambrose/Ambrose.gd
Normal file
|
|
@ -0,0 +1,210 @@
|
|||
extends NPC
|
||||
|
||||
var meowDelay = 0
|
||||
|
||||
func _ready():
|
||||
MessageManager.messageSent.connect(messageSpoken)
|
||||
dialogueResource = load("res://NPCs/Beach/Ambrose/Ambrose.dialogue")
|
||||
pronouns = "he/they"
|
||||
|
||||
func _process(delta):
|
||||
if meowDelay > 0:
|
||||
meowDelay -= delta
|
||||
|
||||
func messageSpoken(message:String):
|
||||
if meowDelay > 0:
|
||||
return
|
||||
|
||||
if GameVariables.player.global_position.distance_to(global_position) > 900:
|
||||
return
|
||||
|
||||
var responseMessages = ["you're a cute kitty", "your a cute kitty", "cute kitty", "meow"]
|
||||
message = message.to_lower().strip_edges()
|
||||
|
||||
for responseMessage in responseMessages:
|
||||
if message.contains(responseMessage):
|
||||
meowDelay = 0.5
|
||||
MessageManager.addMessage("meow :3", self, "Ambrose", Color.YELLOW)
|
||||
break
|
||||
|
||||
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 rules_check():
|
||||
if !basket_rule_check_1():
|
||||
return false
|
||||
if !basket_rule_check_2():
|
||||
return false
|
||||
if !basket_rule_check_3():
|
||||
return false
|
||||
|
||||
return true
|
||||
|
||||
#Rule 1: Sort the baskets from highest to lowest edibility, left to right then top to bottom
|
||||
func basket_rule_check_1():
|
||||
var baskets = get_basket_items()
|
||||
|
||||
var highest = 500000
|
||||
for basket in baskets:
|
||||
if basket == null:
|
||||
continue
|
||||
|
||||
if basket.get_edibility() > highest:
|
||||
return false
|
||||
else:
|
||||
highest = basket.get_edibility()
|
||||
|
||||
return true
|
||||
|
||||
#Rule 2: The top row baskets must be edible and the bottom row must be inedible
|
||||
func basket_rule_check_2():
|
||||
var baskets = get_basket_items()
|
||||
|
||||
var index = 0
|
||||
for basket in baskets:
|
||||
if basket == null:
|
||||
continue
|
||||
|
||||
if index <= 2:
|
||||
if basket.get_edibility() < 50:
|
||||
return false
|
||||
else:
|
||||
if basket.get_edibility() >= 50:
|
||||
return false
|
||||
index += 1
|
||||
|
||||
return true
|
||||
|
||||
#Rule 3: One collumn must be very red, one collumn very green, and one collumn very blue
|
||||
func basket_rule_check_3():
|
||||
var baskets = get_basket_items()
|
||||
|
||||
var colorsLeft = ["red", "green", "blue"]
|
||||
|
||||
var collumnOneColor = get_main_color(baskets[0])
|
||||
if collumnOneColor == "none":
|
||||
return false
|
||||
if get_main_color(baskets[3]) != collumnOneColor:
|
||||
return false
|
||||
colorsLeft.erase(collumnOneColor)
|
||||
|
||||
var collumnTwoColor = get_main_color(baskets[1])
|
||||
if collumnTwoColor == "none" or !(collumnTwoColor in colorsLeft):
|
||||
return false
|
||||
if get_main_color(baskets[4]) != collumnTwoColor:
|
||||
return false
|
||||
colorsLeft.erase(collumnTwoColor)
|
||||
|
||||
var collumnThreeColor = get_main_color(baskets[2])
|
||||
if collumnThreeColor == "none" or !(collumnThreeColor in colorsLeft):
|
||||
return false
|
||||
if get_main_color(baskets[5]) != collumnThreeColor:
|
||||
return false
|
||||
|
||||
return true
|
||||
|
||||
func get_main_color(basket:Item):
|
||||
if basket == null:
|
||||
return "none"
|
||||
|
||||
var color:Color = basket.get_average_color()
|
||||
|
||||
if color.r > color.g and color.r > color.b:
|
||||
return red_check(color)
|
||||
elif color.g > color.r and color.g > color.b:
|
||||
return green_check(color)
|
||||
elif color.b > color.r and color.b > color.g:
|
||||
return blue_check(color)
|
||||
else:
|
||||
return "none"
|
||||
|
||||
func red_check(color:Color):
|
||||
var otherColor = color.g + color.b
|
||||
var red = color.r
|
||||
|
||||
if color.g > 0.2:
|
||||
return "none"
|
||||
|
||||
if red <= 0.156:
|
||||
return "none"
|
||||
if red <= 0.25:
|
||||
if otherColor <= 0.06:
|
||||
return "red"
|
||||
else:
|
||||
return "none"
|
||||
if red <= 0.39:
|
||||
if otherColor <= 0.12:
|
||||
return "red"
|
||||
else:
|
||||
return "none"
|
||||
if red <= 0.58:
|
||||
if color.g <= 0.20 and color.b <= 0.20:
|
||||
return "red"
|
||||
else:
|
||||
return "none"
|
||||
|
||||
if otherColor <= 0.36:
|
||||
return "red"
|
||||
else:
|
||||
return "none"
|
||||
|
||||
func green_check(color:Color):
|
||||
var otherColor = color.r + color.b
|
||||
var green = color.g
|
||||
|
||||
if green <= 0.156:
|
||||
return "none"
|
||||
|
||||
if otherColor < green + 0.2:
|
||||
return "green"
|
||||
else:
|
||||
return "none"
|
||||
|
||||
func blue_check(color:Color):
|
||||
var red = color.r
|
||||
var blue = color.b
|
||||
|
||||
if blue <= 0.156:
|
||||
return "none"
|
||||
|
||||
if red <= float(blue/float(2.5)):
|
||||
return "blue"
|
||||
else:
|
||||
return "none"
|
||||
|
||||
func get_basket_items():
|
||||
var basketInvNames = ["BeachBasket1Basket", "BeachBasket2Basket", "BeachBasket3Basket",
|
||||
"BeachBasket4Basket", "BeachBasket5Basket", "BeachBasket6Basket"]
|
||||
|
||||
var baskets = []
|
||||
for basketInvName in basketInvNames:
|
||||
var basketHoldingInv = InventoryManager.get_inventory(basketInvName)
|
||||
if basketHoldingInv.items.size() > 0:
|
||||
baskets.append(basketHoldingInv.items[0])
|
||||
else:
|
||||
baskets.append(null)
|
||||
|
||||
return baskets
|
||||
|
||||
BIN
NPCs/Beach/Ambrose/Ambrose.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
34
NPCs/Beach/Ambrose/Ambrose.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cm078afincttk"
|
||||
path="res://.godot/imported/Ambrose.png-120bce5e66f898eb8e1bb2c2e03ff62d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ambrose/Ambrose.png"
|
||||
dest_files=["res://.godot/imported/Ambrose.png-120bce5e66f898eb8e1bb2c2e03ff62d.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
62
NPCs/Beach/Ambrose/Ambrose.tscn
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://ch786b3mdbxld"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_n3mwl"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Ambrose/Ambrose.gd" id="2_bufsh"]
|
||||
[ext_resource type="Texture2D" uid="uid://cm078afincttk" path="res://NPCs/Beach/Ambrose/Ambrose.png" id="3_66xfq"]
|
||||
[ext_resource type="Texture2D" uid="uid://bh5y3lcrdavrs" path="res://NPCs/Beach/Ambrose/Blanket.png" id="4_1d11h"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_82e8e"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_66xfq")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_wndef"]
|
||||
radius = 24.0208
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_d1c1k"]
|
||||
radius = 8.0
|
||||
height = 46.0
|
||||
|
||||
[node name="Ambrose" instance=ExtResource("1_n3mwl")]
|
||||
script = ExtResource("2_bufsh")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(6, -26)
|
||||
sprite_frames = SubResource("SpriteFrames_82e8e")
|
||||
|
||||
[node name="Interactable" parent="." index="1"]
|
||||
position = Vector2(0, -43)
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -27.0
|
||||
offset_top = -25.0
|
||||
offset_right = 26.0
|
||||
offset_bottom = 60.0
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Talkable" parent="." index="2"]
|
||||
position = Vector2(1, -15)
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(-1, 13)
|
||||
shape = SubResource("CircleShape2D_wndef")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(1, 7)
|
||||
rotation = 1.5708
|
||||
shape = SubResource("CapsuleShape2D_d1c1k")
|
||||
|
||||
[node name="Blanket" type="Sprite2D" parent="." index="4"]
|
||||
z_index = -1
|
||||
position = Vector2(-34, 8)
|
||||
texture = ExtResource("4_1d11h")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Ambrose/Blanket.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
NPCs/Beach/Ambrose/Blanket.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bh5y3lcrdavrs"
|
||||
path="res://.godot/imported/Blanket.png-6b2b593346e9ee89f6298a01b0a1f27f.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ambrose/Blanket.png"
|
||||
dest_files=["res://.godot/imported/Blanket.png-6b2b593346e9ee89f6298a01b0a1f27f.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Ants/Ant1/Ant1.png
Normal file
|
After Width: | Height: | Size: 199 B |
34
NPCs/Beach/Ants/Ant1/Ant1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dupl7qltu66cf"
|
||||
path="res://.godot/imported/Ant1.png-a6b20c8a9ca49c92dec40168b11ecd06.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant1/Ant1.png"
|
||||
dest_files=["res://.godot/imported/Ant1.png-a6b20c8a9ca49c92dec40168b11ecd06.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
8
NPCs/Beach/Ants/Ant1/Dino.dialogue
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
~ start
|
||||
|
||||
Dino: Welcome to our Secret Island.
|
||||
Dino: It's a good secret spot. Most animals can't swim way out here.
|
||||
Dino: But we got the crew together and formed our bodies into a boat.
|
||||
Dino: We sailed the waves. We're pretty hardcore.
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Ants/Ant1/Dino.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://dnjfakkeoxb1v"
|
||||
path="res://.godot/imported/Dino.dialogue-7c275671523f3b4853fc0f63806f2a90.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant1/Dino.dialogue"
|
||||
dest_files=["res://.godot/imported/Dino.dialogue-7c275671523f3b4853fc0f63806f2a90.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
4
NPCs/Beach/Ants/Ant1/Dino.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends NPC
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/Beach/Ants/Ant1/Dino.dialogue")
|
||||
52
NPCs/Beach/Ants/Ant1/Dino.tscn
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://d4f5trsrir0bl"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_f2ghj"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Ants/Ant1/Dino.gd" id="2_akh2l"]
|
||||
[ext_resource type="Texture2D" uid="uid://dupl7qltu66cf" path="res://NPCs/Beach/Ants/Ant1/Ant1.png" id="3_ameuk"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_4wy6t"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_ameuk")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_bnoc4"]
|
||||
radius = 33.3766
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_8u141"]
|
||||
radius = 5.38516
|
||||
|
||||
[node name="Dino" instance=ExtResource("1_f2ghj")]
|
||||
script = ExtResource("2_akh2l")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(-1, -4)
|
||||
sprite_frames = SubResource("SpriteFrames_4wy6t")
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -16.0
|
||||
offset_top = -13.0
|
||||
offset_right = 14.0
|
||||
offset_bottom = 5.0
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Talkable" parent="." index="2"]
|
||||
position = Vector2(0, -2)
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(0, 2)
|
||||
shape = SubResource("CircleShape2D_bnoc4")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(0, -1)
|
||||
shape = SubResource("CircleShape2D_8u141")
|
||||
disabled = true
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Ants/Ant2/Ant2.png
Normal file
|
After Width: | Height: | Size: 218 B |
34
NPCs/Beach/Ants/Ant2/Ant2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ce0v7qcocwui3"
|
||||
path="res://.godot/imported/Ant2.png-cc96ccba492ab004eae5ed16b8e49663.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant2/Ant2.png"
|
||||
dest_files=["res://.godot/imported/Ant2.png-cc96ccba492ab004eae5ed16b8e49663.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Ants/Ant2/Ant2Old.png
Normal file
|
After Width: | Height: | Size: 229 B |
34
NPCs/Beach/Ants/Ant2/Ant2Old.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bqlcd7tbv3tgo"
|
||||
path="res://.godot/imported/Ant2Old.png-adcec6c75f1ba5d01e4a87de7b017a9c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant2/Ant2Old.png"
|
||||
dest_files=["res://.godot/imported/Ant2Old.png-adcec6c75f1ba5d01e4a87de7b017a9c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Ants/Ant2/Ant3.png
Normal file
|
After Width: | Height: | Size: 228 B |
34
NPCs/Beach/Ants/Ant2/Ant3.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cpw65tcfr1ukp"
|
||||
path="res://.godot/imported/Ant3.png-269dd612c0ef6eee89c921c5847be5eb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant2/Ant3.png"
|
||||
dest_files=["res://.godot/imported/Ant3.png-269dd612c0ef6eee89c921c5847be5eb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
7
NPCs/Beach/Ants/Ant2/Ifa.dialogue
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
~ start
|
||||
|
||||
Ifa: *Ifa is making popping sounds with her mouth*
|
||||
Ifa: *Most ants can't do that*
|
||||
Ifa: *It's very impressive*
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Ants/Ant2/Ifa.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://d2vxrn3ldxpjr"
|
||||
path="res://.godot/imported/Ifa.dialogue-71f9e15253fd221c252d94c9e6ba4169.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Ants/Ant2/Ifa.dialogue"
|
||||
dest_files=["res://.godot/imported/Ifa.dialogue-71f9e15253fd221c252d94c9e6ba4169.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
4
NPCs/Beach/Ants/Ant2/Ifa.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends NPC
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/Beach/Ants/Ant2/Ifa.dialogue")
|
||||
59
NPCs/Beach/Ants/Ant2/Ifa.tscn
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://dv5uldfglil4j"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_udq2m"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Ants/Ant2/Ifa.gd" id="2_qwbac"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce0v7qcocwui3" path="res://NPCs/Beach/Ants/Ant2/Ant2.png" id="3_fptlx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cpw65tcfr1ukp" path="res://NPCs/Beach/Ants/Ant2/Ant3.png" id="4_nvoxi"]
|
||||
[ext_resource type="Script" path="res://Utils/PlayOnReady.gd" id="5_s41ij"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_vyfcn"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_fptlx")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_nvoxi")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 8.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_bnoc4"]
|
||||
radius = 39.0
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_8u141"]
|
||||
radius = 5.38516
|
||||
|
||||
[node name="Ifa" instance=ExtResource("1_udq2m")]
|
||||
script = ExtResource("2_qwbac")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(2, -5)
|
||||
sprite_frames = SubResource("SpriteFrames_vyfcn")
|
||||
frame_progress = 0.906665
|
||||
script = ExtResource("5_s41ij")
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -17.0
|
||||
offset_top = -14.0
|
||||
offset_right = 18.0
|
||||
offset_bottom = 6.0
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Talkable" parent="." index="2"]
|
||||
position = Vector2(0, -4)
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(0, 4)
|
||||
shape = SubResource("CircleShape2D_bnoc4")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(0, -1)
|
||||
shape = SubResource("CircleShape2D_8u141")
|
||||
disabled = true
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Fish/Fish/Fish.ase
Normal file
106
NPCs/Beach/Fish/Fish/Fish.tscn
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
[gd_scene load_steps=20 format=3 uid="uid://u4vv1n4s142v"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_kr713"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Fish/Fish/JudithFish.gd" id="2_a25xx"]
|
||||
[ext_resource type="Texture2D" uid="uid://cf8pgymsdtl73" path="res://NPCs/Beach/Fish/Fish/Idle/Fish1.png" id="3_cj1qo"]
|
||||
[ext_resource type="Texture2D" uid="uid://cqhnxieb4lrhg" path="res://NPCs/Beach/Fish/Fish/Idle/Fish2.png" id="4_rqjbk"]
|
||||
[ext_resource type="Texture2D" uid="uid://ctbnmgnaldt8n" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump1.png" id="5_tvsha"]
|
||||
[ext_resource type="Texture2D" uid="uid://ccrtmwpdxacfo" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump2.png" id="6_lemha"]
|
||||
[ext_resource type="Texture2D" uid="uid://bhisn0x6mxebx" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump3.png" id="7_5tpqm"]
|
||||
[ext_resource type="Texture2D" uid="uid://b73iuk0mo6kvb" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump4.png" id="8_4alhh"]
|
||||
[ext_resource type="Texture2D" uid="uid://djvyynoarx6nt" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump5.png" id="9_xjyq2"]
|
||||
[ext_resource type="Texture2D" uid="uid://dexdbb7bxtvn2" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump6.png" id="10_o2psb"]
|
||||
[ext_resource type="Texture2D" uid="uid://bk8ncbv7672g3" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump7.png" id="11_c0yjn"]
|
||||
[ext_resource type="Texture2D" uid="uid://du8aocscv1rqn" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump8.png" id="12_k2lae"]
|
||||
[ext_resource type="Texture2D" uid="uid://dkr52dilyx1id" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump9.png" id="13_ksi30"]
|
||||
[ext_resource type="Texture2D" uid="uid://inwjkinn6njv" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump10.png" id="14_bhi3k"]
|
||||
[ext_resource type="Texture2D" uid="uid://crkmtq3hjivx7" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump11.png" id="15_flgmv"]
|
||||
[ext_resource type="Texture2D" uid="uid://c6h7jgeg2xdak" path="res://NPCs/Beach/Fish/Fish/Jump/FishJump12.png" id="16_nyaol"]
|
||||
[ext_resource type="Script" path="res://Utils/PlayOnReady.gd" id="17_lc1fu"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_rjglk"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_cj1qo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_rqjbk")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Idle",
|
||||
"speed": 1.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("5_tvsha")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("6_lemha")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("7_5tpqm")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("8_4alhh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("9_xjyq2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("10_o2psb")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("11_c0yjn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("12_k2lae")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("13_ksi30")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("14_bhi3k")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("15_flgmv")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("16_nyaol")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Jump",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_lwjhj"]
|
||||
radius = 12.0
|
||||
height = 52.0
|
||||
|
||||
[node name="Judith" instance=ExtResource("1_kr713")]
|
||||
script = ExtResource("2_a25xx")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(0, -34)
|
||||
sprite_frames = SubResource("SpriteFrames_rjglk")
|
||||
animation = &"Idle"
|
||||
frame_progress = 0.926387
|
||||
script = ExtResource("17_lc1fu")
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -31.0
|
||||
offset_top = -83.0
|
||||
offset_right = 31.0
|
||||
offset_bottom = 14.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(0, -8)
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(-5, -11)
|
||||
rotation = 1.5708
|
||||
shape = SubResource("CapsuleShape2D_lwjhj")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Fish/Fish/Idle/Fish1.png
Normal file
|
After Width: | Height: | Size: 610 B |
34
NPCs/Beach/Fish/Fish/Idle/Fish1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cf8pgymsdtl73"
|
||||
path="res://.godot/imported/Fish1.png-fd9d0985f7471e5d75c3aa5dcdae36e6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Idle/Fish1.png"
|
||||
dest_files=["res://.godot/imported/Fish1.png-fd9d0985f7471e5d75c3aa5dcdae36e6.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Idle/Fish2.png
Normal file
|
After Width: | Height: | Size: 599 B |
34
NPCs/Beach/Fish/Fish/Idle/Fish2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cqhnxieb4lrhg"
|
||||
path="res://.godot/imported/Fish2.png-26fa83b30af01f4ef6acba984098fe2c.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Idle/Fish2.png"
|
||||
dest_files=["res://.godot/imported/Fish2.png-26fa83b30af01f4ef6acba984098fe2c.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
105
NPCs/Beach/Fish/Fish/JudithFish.gd
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
extends NPC
|
||||
|
||||
var jumpAnimationPlayer:AnimationPlayer
|
||||
|
||||
var currentPosition = "BottomRight"
|
||||
var jumping = false
|
||||
|
||||
var hasJumped = true
|
||||
|
||||
var currentlyTalking = false
|
||||
|
||||
var waitBetweenJumps = 12
|
||||
var rng = RandomNumberGenerator.new()
|
||||
|
||||
func _ready():
|
||||
jumpAnimationPlayer = get_parent().get_node("FishJumper")
|
||||
dialogueResource = load("res://NPCs/Beach/Fish/Fish/JudithFishDialogue.dialogue")
|
||||
|
||||
func _process(delta):
|
||||
if not currentlyTalking and not jumping:
|
||||
waitBetweenJumps -= delta
|
||||
if waitBetweenJumps <= 0:
|
||||
jump()
|
||||
elif waitBetweenJumps < 12:
|
||||
waitBetweenJumps = rng.randf_range(12, 19)
|
||||
|
||||
func talking():
|
||||
currentlyTalking = true
|
||||
|
||||
func dialogue_cancel():
|
||||
currentlyTalking = false
|
||||
|
||||
func give_xp():
|
||||
LevelManager.add_XP("swimming", 86)
|
||||
hasJumped = false
|
||||
|
||||
func high_up():
|
||||
z_index = 1
|
||||
|
||||
func landing():
|
||||
z_index = 0
|
||||
|
||||
func arrive():
|
||||
$CollisionShape2D.disabled = false
|
||||
jumping = false
|
||||
|
||||
func jumping_check():
|
||||
return jumping
|
||||
|
||||
func xp_ready_check():
|
||||
return hasJumped
|
||||
|
||||
func asked_jump():
|
||||
LevelManager.get_skill("appreciating").experience_event("Judith", "saw a jump from", 120)
|
||||
if SaveManager.get_value_from_section("saw a jump from", "Judith", 0) >= 10:
|
||||
AchievementManager.complete_achievement("Fishwatching")
|
||||
jump()
|
||||
|
||||
func jump():
|
||||
$CollisionShape2D.disabled = true
|
||||
jumping = true
|
||||
hasJumped = true
|
||||
|
||||
var result = rng.randi_range(0, 1)
|
||||
if currentPosition == "BottomRight":
|
||||
if result == 1:
|
||||
jump_bottom_right_to_bottom_left()
|
||||
else:
|
||||
jump_bottom_right_to_center()
|
||||
elif currentPosition == "BottomLeft":
|
||||
if result == 1:
|
||||
jump_bottom_left_to_bottom_right()
|
||||
else:
|
||||
jump_bottom_left_to_center()
|
||||
elif currentPosition == "Center":
|
||||
if result == 1:
|
||||
jump_center_to_bottom_right()
|
||||
else:
|
||||
jump_center_to_bottom_left()
|
||||
|
||||
waitBetweenJumps = rng.randf_range(12, 19)
|
||||
|
||||
func jump_bottom_right_to_bottom_left():
|
||||
jumpAnimationPlayer.play("JumpBottomRightToBottomLeft")
|
||||
currentPosition = "BottomLeft"
|
||||
|
||||
func jump_center_to_bottom_left():
|
||||
jumpAnimationPlayer.play("JumpCenterToBottomLeft")
|
||||
currentPosition = "BottomLeft"
|
||||
|
||||
func jump_bottom_left_to_bottom_right():
|
||||
jumpAnimationPlayer.play("JumpBottomLeftToBottomRight")
|
||||
currentPosition = "BottomRight"
|
||||
|
||||
func jump_center_to_bottom_right():
|
||||
jumpAnimationPlayer.play("JumpCenterToBottomRight")
|
||||
currentPosition = "BottomRight"
|
||||
|
||||
func jump_bottom_right_to_center():
|
||||
jumpAnimationPlayer.play("JumpBottomRightToCenter")
|
||||
currentPosition = "Center"
|
||||
|
||||
func jump_bottom_left_to_center():
|
||||
jumpAnimationPlayer.play("JumpBottomLeftToCenter")
|
||||
currentPosition = "Center"
|
||||
26
NPCs/Beach/Fish/Fish/JudithFishDialogue.dialogue
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
~ start
|
||||
do DialogueBoxManager.currentSpeaker.talking()
|
||||
if DialogueBoxManager.currentSpeaker.jumping_check():
|
||||
Judith: Woooooooooooo!!!
|
||||
=> END!
|
||||
|
||||
if DialogueBoxManager.currentSpeaker.xp_ready_check():
|
||||
do DialogueBoxManager.currentSpeaker.give_xp()
|
||||
Judith: *Talking to Judith imbues you with swimming knowledge*
|
||||
|
||||
Judith: Hi how's it going?
|
||||
- Good => doing_good
|
||||
- Not great => not_great
|
||||
|
||||
~ doing_good
|
||||
Judith: Sweet, then you'll love to see me do a sick jump.
|
||||
- hells yeah => jump
|
||||
|
||||
~ not_great
|
||||
Judith: Oh no, I'm sure watching me do a sick jump would help.
|
||||
- for sure => jump
|
||||
|
||||
~ jump
|
||||
do DialogueBoxManager.currentSpeaker.asked_jump()
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Fish/Fish/JudithFishDialogue.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://dcoacqopvrnkb"
|
||||
path="res://.godot/imported/JudithFishDialogue.dialogue-399e329758d62d3ec9b10e32d8d9c9a3.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/JudithFishDialogue.dialogue"
|
||||
dest_files=["res://.godot/imported/JudithFishDialogue.dialogue-399e329758d62d3ec9b10e32d8d9c9a3.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump.gif
Normal file
|
After Width: | Height: | Size: 3 KiB |
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump1.png
Normal file
|
After Width: | Height: | Size: 610 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ctbnmgnaldt8n"
|
||||
path="res://.godot/imported/FishJump1.png-da8cd364bdaf6d18ae35b8edf819bf89.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump1.png"
|
||||
dest_files=["res://.godot/imported/FishJump1.png-da8cd364bdaf6d18ae35b8edf819bf89.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump10.png
Normal file
|
After Width: | Height: | Size: 149 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump10.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://inwjkinn6njv"
|
||||
path="res://.godot/imported/FishJump10.png-b838704ade6cffdcd94d735c7d55ab93.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump10.png"
|
||||
dest_files=["res://.godot/imported/FishJump10.png-b838704ade6cffdcd94d735c7d55ab93.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump11.png
Normal file
|
After Width: | Height: | Size: 379 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump11.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://crkmtq3hjivx7"
|
||||
path="res://.godot/imported/FishJump11.png-ba22a799df3756d3a6d40b1f5f3470f1.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump11.png"
|
||||
dest_files=["res://.godot/imported/FishJump11.png-ba22a799df3756d3a6d40b1f5f3470f1.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump12.png
Normal file
|
After Width: | Height: | Size: 585 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump12.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c6h7jgeg2xdak"
|
||||
path="res://.godot/imported/FishJump12.png-01d68f7fb1819b07f8496fad4ce3a906.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump12.png"
|
||||
dest_files=["res://.godot/imported/FishJump12.png-01d68f7fb1819b07f8496fad4ce3a906.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump2.png
Normal file
|
After Width: | Height: | Size: 569 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ccrtmwpdxacfo"
|
||||
path="res://.godot/imported/FishJump2.png-b3dfc6d9d154a4172951d3d34ad19db0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump2.png"
|
||||
dest_files=["res://.godot/imported/FishJump2.png-b3dfc6d9d154a4172951d3d34ad19db0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump3.png
Normal file
|
After Width: | Height: | Size: 650 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump3.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bhisn0x6mxebx"
|
||||
path="res://.godot/imported/FishJump3.png-601248e730d58f63fd08238e5a2e88bc.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump3.png"
|
||||
dest_files=["res://.godot/imported/FishJump3.png-601248e730d58f63fd08238e5a2e88bc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump4.png
Normal file
|
After Width: | Height: | Size: 528 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump4.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://b73iuk0mo6kvb"
|
||||
path="res://.godot/imported/FishJump4.png-42347f9297ab09d7d05fa403da60cd15.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump4.png"
|
||||
dest_files=["res://.godot/imported/FishJump4.png-42347f9297ab09d7d05fa403da60cd15.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump5.png
Normal file
|
After Width: | Height: | Size: 514 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump5.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://djvyynoarx6nt"
|
||||
path="res://.godot/imported/FishJump5.png-41e6c49103b7c79c8b9a38342a1fe4f2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump5.png"
|
||||
dest_files=["res://.godot/imported/FishJump5.png-41e6c49103b7c79c8b9a38342a1fe4f2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump6.png
Normal file
|
After Width: | Height: | Size: 596 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump6.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dexdbb7bxtvn2"
|
||||
path="res://.godot/imported/FishJump6.png-e73e0828cfc499a6c39320f9dbf0a55a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump6.png"
|
||||
dest_files=["res://.godot/imported/FishJump6.png-e73e0828cfc499a6c39320f9dbf0a55a.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump7.png
Normal file
|
After Width: | Height: | Size: 480 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump7.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bk8ncbv7672g3"
|
||||
path="res://.godot/imported/FishJump7.png-ea80164dbb7ba22b9b13ef5fb323430e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump7.png"
|
||||
dest_files=["res://.godot/imported/FishJump7.png-ea80164dbb7ba22b9b13ef5fb323430e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump8.png
Normal file
|
After Width: | Height: | Size: 427 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump8.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://du8aocscv1rqn"
|
||||
path="res://.godot/imported/FishJump8.png-799f29add1b728570980208cc5f60ff0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump8.png"
|
||||
dest_files=["res://.godot/imported/FishJump8.png-799f29add1b728570980208cc5f60ff0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Fish/Fish/Jump/FishJump9.png
Normal file
|
After Width: | Height: | Size: 320 B |
34
NPCs/Beach/Fish/Fish/Jump/FishJump9.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dkr52dilyx1id"
|
||||
path="res://.godot/imported/FishJump9.png-6c30711659265a30598d853535e5acc5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Fish/Fish/Jump/FishJump9.png"
|
||||
dest_files=["res://.godot/imported/FishJump9.png-6c30711659265a30598d853535e5acc5.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
27
NPCs/Beach/Seal/Seal.dialogue
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
~ start
|
||||
|
||||
if not get_save_value("ambiQuestStarted", false):
|
||||
Bradrek: This sucks.
|
||||
Bradrek: I'm the best I deserve the best.
|
||||
Bradrek: But I don't even have a ball.
|
||||
Bradrek: I can't wait until everything comes to me and I have what I deserve.
|
||||
=> END
|
||||
|
||||
if not get_save_value("sealBallRetrieved", false):
|
||||
Bradrek: I still don't have a ball, which is what I deserve.
|
||||
Bradrek: Because I'm the best.
|
||||
Bradrek: But for now I'm holding onto this note, it's a pretty cool note.
|
||||
=> END
|
||||
|
||||
if not DialogueBoxManager.currentSpeaker.note_check():
|
||||
Bradrek: Ha ha! I finally got a ball, like I deserve.
|
||||
Bradrek: It just came to me, I didn't have to work for it at all.
|
||||
Bradrek: That's because I'm the best and I deserve this ball.
|
||||
Bradrek: Here you can have this note, it's not actually that cool.
|
||||
do DialogueBoxManager.currentSpeaker.give_note()
|
||||
=> END
|
||||
|
||||
Bradrek: This ball is the best, it came to me because I'm the best.
|
||||
Bradrek: If any less best balls come to me I'll toss them to you to take care of.
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Seal/Seal.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://dg5u5a27gfivq"
|
||||
path="res://.godot/imported/Seal.dialogue-8ee0eecb2071ae41685076f4969dbc60.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Seal/Seal.dialogue"
|
||||
dest_files=["res://.godot/imported/Seal.dialogue-8ee0eecb2071ae41685076f4969dbc60.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
57
NPCs/Beach/Seal/Seal.gd
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
extends NPC
|
||||
|
||||
var returnPhrases = ["Mine's better!", "You can have this one.", "This one's yours."]
|
||||
var returnPhraseIndex = 0
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/Beach/Seal/Seal.dialogue")
|
||||
state_check()
|
||||
|
||||
func note_check():
|
||||
if InventoryManager.get_item_count_by_name("Basket Plan 2", "keyItems") > 0:
|
||||
return true
|
||||
else:
|
||||
return false
|
||||
|
||||
func give_note():
|
||||
var noteItem = preload("res://Items/Paper/BasketPlan2.gd").new()
|
||||
InventoryManager.add_item_to_inventory(noteItem, 1, "keyItems")
|
||||
MessageManager.item_popup(noteItem.duplicate())
|
||||
|
||||
state_check()
|
||||
|
||||
func state_check():
|
||||
if SaveManager.get_save_value("sealBallRetrieved", false):
|
||||
$SealBall.visible = true
|
||||
else:
|
||||
$SealBall.visible = false
|
||||
|
||||
if SaveManager.get_save_value("ambiQuestStarted", false):
|
||||
if InventoryManager.get_item_count_by_name("Basket Plan 2", "keyItems") > 0:
|
||||
$Sprite.frame = 0
|
||||
else:
|
||||
$Sprite.frame = 1
|
||||
else:
|
||||
$Sprite.frame = 0
|
||||
|
||||
func ball_caught():
|
||||
if !SaveManager.get_save_value("sealBallRetrieved", false):
|
||||
SaveManager.set_save_value("sealBallRetrieved", true)
|
||||
MessageManager.addMessage("Finally!", self, "Bradrek", Color.YELLOW)
|
||||
get_tree().get_root().get_node("MainGame/PuzzleCompleteAudio").play()
|
||||
else:
|
||||
MessageManager.addMessage(returnPhrases[returnPhraseIndex], self, "Bradrek", Color.YELLOW)
|
||||
returnPhraseIndex += 1
|
||||
if returnPhraseIndex >= returnPhrases.size():
|
||||
returnPhraseIndex = 0
|
||||
|
||||
var ballItem = preload("res://Items/Toys/Beach/Ball.gd").new()
|
||||
InventoryManager.add_item_to_inventory(ballItem)
|
||||
MessageManager.item_popup(ballItem.duplicate())
|
||||
|
||||
state_check()
|
||||
|
||||
func _on_ball_catch_area_body_entered(body):
|
||||
if body is Ball:
|
||||
body.queue_free()
|
||||
ball_caught()
|
||||
BIN
NPCs/Beach/Seal/Seal.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
34
NPCs/Beach/Seal/Seal.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://dklkoqcx0qhf1"
|
||||
path="res://.godot/imported/Seal.png-01ea9e2dad889750c597fb55bcf5c259.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Seal/Seal.png"
|
||||
dest_files=["res://.godot/imported/Seal.png-01ea9e2dad889750c597fb55bcf5c259.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
72
NPCs/Beach/Seal/Seal.tscn
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://cn0rlu1x4kakc"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_evrv5"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Seal/Seal.gd" id="2_sblbo"]
|
||||
[ext_resource type="Texture2D" uid="uid://dklkoqcx0qhf1" path="res://NPCs/Beach/Seal/Seal.png" id="3_fi4iu"]
|
||||
[ext_resource type="Texture2D" uid="uid://oggti7coatvk" path="res://NPCs/Beach/Seal/SealNote.png" id="4_uqs8h"]
|
||||
[ext_resource type="PackedScene" uid="uid://bwbddg5e5xi54" path="res://Objects/Beach/Ball/SealBall.tscn" id="5_fuf70"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_xdtoc"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_fi4iu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_uqs8h")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_bsf3e"]
|
||||
radius = 98.2033
|
||||
|
||||
[node name="Seal" instance=ExtResource("1_evrv5")]
|
||||
script = ExtResource("2_sblbo")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(-1.2, 21.2)
|
||||
sprite_frames = SubResource("SpriteFrames_xdtoc")
|
||||
frame = 1
|
||||
|
||||
[node name="Interactable" parent="." index="1"]
|
||||
position = Vector2(-1.2, 21.2)
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -104.0
|
||||
offset_top = -49.0
|
||||
offset_right = -32.0
|
||||
offset_bottom = -23.0
|
||||
scale = Vector2(3, 3.3)
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Talkable" parent="." index="2"]
|
||||
position = Vector2(-1.2, 21.2)
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
shape = SubResource("CircleShape2D_bsf3e")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(-1.2, 25.2)
|
||||
disabled = true
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="." index="4"]
|
||||
position = Vector2(-1.2, 64.2)
|
||||
polygon = PackedVector2Array(-102, -72, -91, -56, -30, -18, 27, -9, 53, 0, 58, -9, 103, -11, 104, -34, 92, -55, 91, -68, 72, -64, -26, -84, -71, -84, -99, -78)
|
||||
|
||||
[node name="SealBall" parent="." index="5" instance=ExtResource("5_fuf70")]
|
||||
position = Vector2(45, -26)
|
||||
lock_rotation = false
|
||||
|
||||
[node name="BallCatchArea" type="Area2D" parent="." index="6"]
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="BallCatchArea" index="0"]
|
||||
polygon = PackedVector2Array(-113, 18, -78, 60, 2, 79, 82, 81, 128, 63, 144, 31, 135, -8, 101, -37, 1, -64, -78, -62, -119, -26)
|
||||
|
||||
[connection signal="body_entered" from="BallCatchArea" to="." method="_on_ball_catch_area_body_entered"]
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Seal/SealNote.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
34
NPCs/Beach/Seal/SealNote.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://oggti7coatvk"
|
||||
path="res://.godot/imported/SealNote.png-31cbe01d5dd8ec08dcbb0cfd25653f35.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Seal/SealNote.png"
|
||||
dest_files=["res://.godot/imported/SealNote.png-31cbe01d5dd8ec08dcbb0cfd25653f35.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
8
NPCs/Beach/Snak/Snak.dialogue
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
~ start
|
||||
|
||||
Tyler: Welcome Welcome to my Snak Shak.
|
||||
Tyler: I have remodeled this old shack into the renowned Snak Shak.
|
||||
Tyler: I have prepared many Delicacies that I found in the old shack.
|
||||
Tyler: Please enjoy them; I recommend the Wustard.
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Snak/Snak.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://drmr326qshba7"
|
||||
path="res://.godot/imported/Snak.dialogue-3d0827ffb10b1a81610a9203b9a85746.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Snak/Snak.dialogue"
|
||||
dest_files=["res://.godot/imported/Snak.dialogue-3d0827ffb10b1a81610a9203b9a85746.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
4
NPCs/Beach/Snak/Snak.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends NPC
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/Beach/Snak/Snak.dialogue")
|
||||
BIN
NPCs/Beach/Snak/Snak.png
Normal file
|
After Width: | Height: | Size: 843 B |
34
NPCs/Beach/Snak/Snak.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d170nfxigc28x"
|
||||
path="res://.godot/imported/Snak.png-a489aa675d35503a982846f49c1ed2b0.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Snak/Snak.png"
|
||||
dest_files=["res://.godot/imported/Snak.png-a489aa675d35503a982846f49c1ed2b0.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
49
NPCs/Beach/Snak/Snak.tscn
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://b65h8ptq88k31"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_ycn6h"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Snak/Snak.gd" id="2_kaunn"]
|
||||
[ext_resource type="Texture2D" uid="uid://d170nfxigc28x" path="res://NPCs/Beach/Snak/Snak.png" id="3_wsidj"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_bfh8j"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_wsidj")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_1wnv4"]
|
||||
radius = 45.0
|
||||
|
||||
[node name="Snak" instance=ExtResource("1_ycn6h")]
|
||||
script = ExtResource("2_kaunn")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(0, -43)
|
||||
sprite_frames = SubResource("SpriteFrames_bfh8j")
|
||||
|
||||
[node name="Interactable" parent="." index="1"]
|
||||
position = Vector2(0, -43)
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -36.0
|
||||
offset_top = -12.0
|
||||
offset_right = 36.0
|
||||
offset_bottom = 14.0
|
||||
metadata/_edit_use_anchors_ = true
|
||||
|
||||
[node name="Talkable" parent="." index="2"]
|
||||
position = Vector2(0, -43)
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
shape = SubResource("CircleShape2D_1wnv4")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(0, -39)
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
16
NPCs/Beach/Whale/Whale.dialogue
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
~ start
|
||||
|
||||
if DialogueBoxManager.currentSpeaker.wet_wustard_check():
|
||||
Herbert: You have Wet Wustard >:)
|
||||
Herbert: I'm gonna take it >:)
|
||||
do DialogueBoxManager.currentSpeaker.take_wet_wustard()
|
||||
do DialogueBoxManager.currentSpeaker.give_knowledge()
|
||||
Herbert: Hee hee hee >:)
|
||||
=> END
|
||||
|
||||
Herbert: Hi I'm just a normal whale.
|
||||
Herbert: I'm just hanging out here, nothing to worry about.
|
||||
Herbert: Please bring me Wet Wustard :)
|
||||
Herbert: I am normal about Wet Wustard :)
|
||||
|
||||
=> END
|
||||
15
NPCs/Beach/Whale/Whale.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://ckqmceliursrw"
|
||||
path="res://.godot/imported/Whale.dialogue-6f14f75a1a1816743c7d23e1522e8188.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Whale/Whale.dialogue"
|
||||
dest_files=["res://.godot/imported/Whale.dialogue-6f14f75a1a1816743c7d23e1522e8188.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
56
NPCs/Beach/Whale/Whale.gd
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
extends NPC
|
||||
|
||||
var wetWustardItem
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/Beach/Whale/Whale.dialogue")
|
||||
wetWustardItem = preload("res://Items/Foods/Condiments/Wustard.gd").new()
|
||||
wetWustardItem.set_modification(Item.modifications.Wet)
|
||||
|
||||
MessageManager.messageSent.connect(message_spoken)
|
||||
|
||||
func message_spoken(message:String):
|
||||
message = message.to_lower().strip_edges()
|
||||
if message.contains("i got the stuff") or message.contains("i've got the stuff") or message.contains("i have got the stuff") or message.contains("i have the stuff"):
|
||||
if distance_check():
|
||||
if wet_wustard_count() == 0:
|
||||
MessageManager.addMessage("You do not", self, "Herbert", Color.YELLOW)
|
||||
elif wet_wustard_count() < 5:
|
||||
MessageManager.addMessage("Not enough", self, "Herbert", Color.YELLOW)
|
||||
else:
|
||||
MessageManager.addMessage("I'll be taking that >:)", self, "Herbert", Color.YELLOW)
|
||||
take_wet_wustard()
|
||||
give_silica_gel()
|
||||
|
||||
func give_silica_gel():
|
||||
var silicaGelPacketItem = preload("res://Items/Artificial/Products/SilicaGelPacket.gd").new()
|
||||
InventoryManager.add_item_to_inventory(silicaGelPacketItem)
|
||||
MessageManager.item_popup(silicaGelPacketItem.duplicate())
|
||||
|
||||
func distance_check():
|
||||
var maxTradeDistance = 600
|
||||
var distance = global_position.distance_to(GameVariables.player.global_position)
|
||||
if distance < maxTradeDistance:
|
||||
return true
|
||||
else:
|
||||
return false
|
||||
|
||||
func wet_wustard_count():
|
||||
var amountHad = InventoryManager.get_item_count(wetWustardItem)
|
||||
return amountHad
|
||||
|
||||
func wet_wustard_check():
|
||||
if InventoryManager.check_if_in_inventory(wetWustardItem):
|
||||
return true
|
||||
else:
|
||||
return false
|
||||
|
||||
func take_wet_wustard():
|
||||
var wetWustardCount = wet_wustard_count()
|
||||
InventoryManager.remove_item_from_inventory(wetWustardItem, wetWustardCount)
|
||||
LevelManager.get_skill("appreciating").experience_event("Herbert", "gave wustard to", 140)
|
||||
if wetWustardCount >= 50:
|
||||
AchievementManager.complete_achievement("Wustard Whale")
|
||||
|
||||
func give_knowledge():
|
||||
LevelManager.add_XP("swimming", 187)
|
||||
48
NPCs/Beach/Whale/Whale.tscn
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://brmjavcajdu03"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_3f7lk"]
|
||||
[ext_resource type="Script" path="res://NPCs/Beach/Whale/Whale.gd" id="2_cs65o"]
|
||||
[ext_resource type="Texture2D" uid="uid://bdddtyk2coax8" path="res://NPCs/Beach/Whale/Whale1.png" id="2_dbxph"]
|
||||
[ext_resource type="Texture2D" uid="uid://do4kg2auu2dwm" path="res://NPCs/Beach/Whale/Whale2.png" id="3_r42pj"]
|
||||
[ext_resource type="Script" path="res://Utils/PlayOnReady.gd" id="5_yfdiw"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_pa14j"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("2_dbxph")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_r42pj")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 1.2
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_6t2cr"]
|
||||
radius = 136.059
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_u025d"]
|
||||
radius = 22.0
|
||||
height = 326.0
|
||||
|
||||
[node name="Whale" instance=ExtResource("1_3f7lk")]
|
||||
script = ExtResource("2_cs65o")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(56, -68)
|
||||
sprite_frames = SubResource("SpriteFrames_pa14j")
|
||||
frame_progress = 0.804645
|
||||
script = ExtResource("5_yfdiw")
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(6, -11)
|
||||
shape = SubResource("CircleShape2D_6t2cr")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(46, 17)
|
||||
rotation = 1.5708
|
||||
shape = SubResource("CapsuleShape2D_u025d")
|
||||
|
||||
[editable path="Talkable"]
|
||||
BIN
NPCs/Beach/Whale/Whale1.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
NPCs/Beach/Whale/Whale1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bdddtyk2coax8"
|
||||
path="res://.godot/imported/Whale1.png-5c81db3f58300f302cbda101482eb85e.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Whale/Whale1.png"
|
||||
dest_files=["res://.godot/imported/Whale1.png-5c81db3f58300f302cbda101482eb85e.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
NPCs/Beach/Whale/Whale2.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
NPCs/Beach/Whale/Whale2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://do4kg2auu2dwm"
|
||||
path="res://.godot/imported/Whale2.png-5f2e700f569fe95907484e02f0f12feb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Beach/Whale/Whale2.png"
|
||||
dest_files=["res://.godot/imported/Whale2.png-5f2e700f569fe95907484e02f0f12feb.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||