It's Cow Game! Version 2.04!
14
NPCs/Arcade/GoatKid.dialogue
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
~ start
|
||||
|
||||
% Goat: Flappy Cow is the greatest game ever made.
|
||||
% Goat: I love Flappy Cow!!!
|
||||
% Goat: I can beat Flappy Cow with my eyes closed I'm just that good.
|
||||
% Goat: Hey you kind of look like the cow from Flappy Cow, not as cool though.
|
||||
% Goat: Flappy Cow is way better than Tears of the Cow.
|
||||
% Goat: My brother speedran Flappy Cow in 3.4 seconds using the haystack skip it's gotta be frame perfect or it doesn't work!!!
|
||||
% Goat: Flappy Cow has the best story of any video game.
|
||||
% Goat: Flappy Cow is the most engaging and most addicting and most action game of all time.
|
||||
% Goat: Flappy Cow is innovative but also true to the franchise's roots.
|
||||
% Goat: I hope they make Flappy Goat sometime, I would like to see people like myself being represented in media more!
|
||||
|
||||
=> END
|
||||
15
NPCs/Arcade/GoatKid.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://cq8ckonbneirp"
|
||||
path="res://.godot/imported/GoatKid.dialogue-6b52c913e23b1a7f29fd8fc591773ce3.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid.dialogue"
|
||||
dest_files=["res://.godot/imported/GoatKid.dialogue-6b52c913e23b1a7f29fd8fc591773ce3.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
69
NPCs/Arcade/GoatKid1/GoatKid1.gd
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
extends NPC
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var hopSpeed = -400
|
||||
|
||||
var minX = 0
|
||||
var maxX = 0
|
||||
|
||||
var waitTimer = 0
|
||||
var hopping = false
|
||||
var flipChance = false
|
||||
|
||||
func _ready():
|
||||
characterName = "Kid"
|
||||
pronouns = "she/her"
|
||||
|
||||
minX = position.x
|
||||
maxX = position.x + 500
|
||||
|
||||
func _process(delta):
|
||||
waitTimer -= delta
|
||||
if waitTimer <= 0:
|
||||
if $Sprite.animation != "default":
|
||||
wait_between_actions()
|
||||
else:
|
||||
pick_next_action()
|
||||
|
||||
if hopping:
|
||||
if $Sprite.frame >= 1:
|
||||
position.x += hopSpeed*delta
|
||||
flipChance = true
|
||||
else:
|
||||
if flipChance:
|
||||
flipChance = false
|
||||
if rng.randi_range(0, 1) == 1:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = !$Sprite.flip_h
|
||||
|
||||
if position.x <= minX and hopSpeed < 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = true
|
||||
elif position.x >= maxX and hopSpeed > 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = false
|
||||
|
||||
func wait_between_actions():
|
||||
hopping = false
|
||||
waitTimer = rng.randf_range(0.5, 1)
|
||||
$Sprite.play("default")
|
||||
|
||||
func pick_next_action():
|
||||
hopping = false
|
||||
|
||||
var nextActionResult = rng.randi_range(0, 4)
|
||||
if nextActionResult <= 2:
|
||||
hop()
|
||||
elif nextActionResult <= 3:
|
||||
yoyo()
|
||||
elif nextActionResult <= 4:
|
||||
wait_between_actions()
|
||||
|
||||
func yoyo():
|
||||
$Sprite.play("Yoyo")
|
||||
waitTimer = rng.randi_range(3, 12)
|
||||
|
||||
func hop():
|
||||
$Sprite.play("Prance")
|
||||
waitTimer = rng.randi_range(2, 4)
|
||||
hopping = true
|
||||
BIN
NPCs/Arcade/GoatKid1/PranceAnim/goat1prance.gif
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
NPCs/Arcade/GoatKid1/PranceAnim/goatKid1Prance.png
Normal file
|
After Width: | Height: | Size: 642 B |
34
NPCs/Arcade/GoatKid1/PranceAnim/goatKid1Prance.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bryd41gd7qeda"
|
||||
path="res://.godot/imported/goatKid1Prance.png-cc623dae1373caccb0743ff095378137.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid1/PranceAnim/goatKid1Prance.png"
|
||||
dest_files=["res://.godot/imported/goatKid1Prance.png-cc623dae1373caccb0743ff095378137.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/Arcade/GoatKid1/YoyoAnim/goat1yoyo.gif
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo1.png
Normal file
|
After Width: | Height: | Size: 631 B |
34
NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d3elfbxqrdla0"
|
||||
path="res://.godot/imported/goat1yoyo1.png-e723645ad91609b0cd1d910ba16889cb.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo1.png"
|
||||
dest_files=["res://.godot/imported/goat1yoyo1.png-e723645ad91609b0cd1d910ba16889cb.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/Arcade/GoatKid1/YoyoAnim/goat1yoyo2.png
Normal file
|
After Width: | Height: | Size: 636 B |
34
NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bfr1pycwgr4l4"
|
||||
path="res://.godot/imported/goat1yoyo2.png-fff38f98bc5a6f1d470069c33fe0e6de.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo2.png"
|
||||
dest_files=["res://.godot/imported/goat1yoyo2.png-fff38f98bc5a6f1d470069c33fe0e6de.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/Arcade/GoatKid1/YoyoAnim/goat1yoyo3.png
Normal file
|
After Width: | Height: | Size: 641 B |
34
NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo3.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cecuoy48savco"
|
||||
path="res://.godot/imported/goat1yoyo3.png-1ba875a35cc896a934e2ddfa24a145c6.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo3.png"
|
||||
dest_files=["res://.godot/imported/goat1yoyo3.png-1ba875a35cc896a934e2ddfa24a145c6.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/Arcade/GoatKid1/goatKid1Idle.png
Normal file
|
After Width: | Height: | Size: 596 B |
34
NPCs/Arcade/GoatKid1/goatKid1Idle.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://pc5ng2mwgkxe"
|
||||
path="res://.godot/imported/goatKid1Idle.png-ec05512ef2eef01e1183c4d12d21ba2a.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid1/goatKid1Idle.png"
|
||||
dest_files=["res://.godot/imported/goatKid1Idle.png-ec05512ef2eef01e1183c4d12d21ba2a.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
|
||||
82
NPCs/Arcade/GoatKid1/goat_kid_1.tscn
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
[gd_scene load_steps=12 format=3 uid="uid://dyatj06jpchgo"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_ksl6a"]
|
||||
[ext_resource type="Script" path="res://NPCs/Arcade/GoatKid1/GoatKid1.gd" id="2_5njyi"]
|
||||
[ext_resource type="Texture2D" uid="uid://pc5ng2mwgkxe" path="res://NPCs/Arcade/GoatKid1/goatKid1Idle.png" id="2_xhghv"]
|
||||
[ext_resource type="Resource" uid="uid://cq8ckonbneirp" path="res://NPCs/Arcade/GoatKid.dialogue" id="3_dgbls"]
|
||||
[ext_resource type="Texture2D" uid="uid://bryd41gd7qeda" path="res://NPCs/Arcade/GoatKid1/PranceAnim/goatKid1Prance.png" id="4_2057f"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3elfbxqrdla0" path="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo1.png" id="5_7kju2"]
|
||||
[ext_resource type="Texture2D" uid="uid://bfr1pycwgr4l4" path="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo2.png" id="6_t1str"]
|
||||
[ext_resource type="Texture2D" uid="uid://cecuoy48savco" path="res://NPCs/Arcade/GoatKid1/YoyoAnim/goat1yoyo3.png" id="7_h1edl"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_s45os"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("2_xhghv")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_2057f")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Prance",
|
||||
"speed": 6.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 5.0,
|
||||
"texture": ExtResource("5_7kju2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("6_t1str")
|
||||
}, {
|
||||
"duration": 2.0,
|
||||
"texture": ExtResource("7_h1edl")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("6_t1str")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Yoyo",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("2_xhghv")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_im52w"]
|
||||
radius = 31.4006
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_pgnks"]
|
||||
size = Vector2(60, 7)
|
||||
|
||||
[node name="GoatKid1" instance=ExtResource("1_ksl6a")]
|
||||
script = ExtResource("2_5njyi")
|
||||
dialogueResource = ExtResource("3_dgbls")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(0, -37)
|
||||
sprite_frames = SubResource("SpriteFrames_s45os")
|
||||
frame_progress = 0.92854
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -41.0
|
||||
offset_top = -70.0
|
||||
offset_right = 44.0
|
||||
offset_bottom = 1.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(7, -30)
|
||||
shape = SubResource("CircleShape2D_im52w")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(10, -2.5)
|
||||
shape = SubResource("RectangleShape2D_pgnks")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
63
NPCs/Arcade/GoatKid2/GoatKid2.gd
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
extends NPC
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var hopSpeed = -400
|
||||
|
||||
var minX = 0
|
||||
var maxX = 0
|
||||
|
||||
var waitTimer = 0
|
||||
var hopping = false
|
||||
var flipChance = false
|
||||
|
||||
func _ready():
|
||||
characterName = "Kid"
|
||||
pronouns = "she/her"
|
||||
|
||||
minX = position.x
|
||||
maxX = position.x + 500
|
||||
|
||||
func _process(delta):
|
||||
waitTimer -= delta
|
||||
if waitTimer <= 0:
|
||||
if $Sprite.animation != "default":
|
||||
wait_between_actions()
|
||||
else:
|
||||
pick_next_action()
|
||||
|
||||
if hopping:
|
||||
if $Sprite.frame >= 1:
|
||||
position.x += hopSpeed*delta
|
||||
flipChance = true
|
||||
else:
|
||||
if flipChance:
|
||||
flipChance = false
|
||||
if rng.randi_range(0, 1) == 1:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = !$Sprite.flip_h
|
||||
|
||||
if position.x <= minX and hopSpeed < 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = true
|
||||
elif position.x >= maxX and hopSpeed > 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = false
|
||||
|
||||
func wait_between_actions():
|
||||
hopping = false
|
||||
waitTimer = rng.randf_range(0.5, 1)
|
||||
$Sprite.play("default")
|
||||
|
||||
func pick_next_action():
|
||||
hopping = false
|
||||
|
||||
var nextActionResult = rng.randi_range(0, 4)
|
||||
if nextActionResult <= 3:
|
||||
hop()
|
||||
elif nextActionResult <= 4:
|
||||
wait_between_actions()
|
||||
|
||||
func hop():
|
||||
$Sprite.play("Prance")
|
||||
waitTimer = rng.randi_range(2, 4)
|
||||
hopping = true
|
||||
BIN
NPCs/Arcade/GoatKid2/PranceAnim/goat1prance.gif
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
NPCs/Arcade/GoatKid2/PranceAnim/goat2rec.gif
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
NPCs/Arcade/GoatKid2/PranceAnim/goat2rec1.png
Normal file
|
After Width: | Height: | Size: 640 B |
34
NPCs/Arcade/GoatKid2/PranceAnim/goat2rec1.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ctse0jcb6rfq8"
|
||||
path="res://.godot/imported/goat2rec1.png-3b9405be853748d7c6826d692e2468c5.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid2/PranceAnim/goat2rec1.png"
|
||||
dest_files=["res://.godot/imported/goat2rec1.png-3b9405be853748d7c6826d692e2468c5.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/Arcade/GoatKid2/PranceAnim/goat2rec2.png
Normal file
|
After Width: | Height: | Size: 689 B |
34
NPCs/Arcade/GoatKid2/PranceAnim/goat2rec2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ce61spfcpd5ee"
|
||||
path="res://.godot/imported/goat2rec2.png-fcd9949809678cb37590f60828a049ac.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid2/PranceAnim/goat2rec2.png"
|
||||
dest_files=["res://.godot/imported/goat2rec2.png-fcd9949809678cb37590f60828a049ac.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
|
||||
61
NPCs/Arcade/GoatKid2/goat_kid_2.tscn
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://ocl31dhmccr8"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_36jri"]
|
||||
[ext_resource type="Script" path="res://NPCs/Arcade/GoatKid2/GoatKid2.gd" id="2_ugi2u"]
|
||||
[ext_resource type="Resource" uid="uid://cq8ckonbneirp" path="res://NPCs/Arcade/GoatKid.dialogue" id="3_kfihi"]
|
||||
[ext_resource type="Texture2D" uid="uid://ctse0jcb6rfq8" path="res://NPCs/Arcade/GoatKid2/PranceAnim/goat2rec1.png" id="3_xb0oq"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce61spfcpd5ee" path="res://NPCs/Arcade/GoatKid2/PranceAnim/goat2rec2.png" id="4_lqho8"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_6c4d6"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_xb0oq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_lqho8")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Prance",
|
||||
"speed": 6.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_xb0oq")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_im52w"]
|
||||
radius = 31.4006
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_pgnks"]
|
||||
size = Vector2(60, 7)
|
||||
|
||||
[node name="GoatKid2" instance=ExtResource("1_36jri")]
|
||||
script = ExtResource("2_ugi2u")
|
||||
dialogueResource = ExtResource("3_kfihi")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(0, -37)
|
||||
sprite_frames = SubResource("SpriteFrames_6c4d6")
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -41.0
|
||||
offset_top = -68.0
|
||||
offset_right = 44.0
|
||||
offset_bottom = 3.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(7, -30)
|
||||
shape = SubResource("CircleShape2D_im52w")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(10, -2.5)
|
||||
shape = SubResource("RectangleShape2D_pgnks")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
89
NPCs/Arcade/GoatKid3/GoatKid3.gd
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
extends NPC
|
||||
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var hopSpeed = 400
|
||||
|
||||
var minX = 0
|
||||
var maxX = 0
|
||||
|
||||
var waitTimer = 0
|
||||
var hopping = false
|
||||
var kicking = false
|
||||
var flipChance = false
|
||||
|
||||
func _ready():
|
||||
characterName = "Kid"
|
||||
pronouns = "she/her"
|
||||
|
||||
minX = position.x
|
||||
maxX = position.x + 150
|
||||
|
||||
func _process(delta):
|
||||
waitTimer -= delta
|
||||
if waitTimer <= 0:
|
||||
if $Sprite.animation != "default":
|
||||
wait_between_actions()
|
||||
else:
|
||||
pick_next_action()
|
||||
|
||||
if hopping:
|
||||
if $Sprite.frame >= 1:
|
||||
position.x += hopSpeed*delta
|
||||
flipChance = true
|
||||
else:
|
||||
if flipChance:
|
||||
flipChance = false
|
||||
if rng.randi_range(0, 1) == 1:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = !$Sprite.flip_h
|
||||
|
||||
if position.x <= minX and hopSpeed < 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = false
|
||||
elif position.x >= maxX and hopSpeed > 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = true
|
||||
|
||||
if kicking:
|
||||
if $Sprite.frame == 0:
|
||||
flipChance = true
|
||||
else:
|
||||
if flipChance:
|
||||
flipChance = false
|
||||
if rng.randi_range(0, 1) == 1:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = !$Sprite.flip_h
|
||||
|
||||
func wait_between_actions():
|
||||
hopping = false
|
||||
waitTimer = rng.randf_range(0.5, 1)
|
||||
$Sprite.play("default")
|
||||
|
||||
func pick_next_action():
|
||||
hopping = false
|
||||
kicking = false
|
||||
|
||||
var nextActionResult = rng.randi_range(0, 4)
|
||||
if nextActionResult <= 1:
|
||||
hop()
|
||||
elif nextActionResult <= 3:
|
||||
kick()
|
||||
elif nextActionResult <= 4:
|
||||
wait_between_actions()
|
||||
|
||||
func kick():
|
||||
$Sprite.play("Kick")
|
||||
waitTimer = rng.randi_range(1, 5)
|
||||
kicking = true
|
||||
|
||||
func hop():
|
||||
$Sprite.play("Prance")
|
||||
waitTimer = rng.randi_range(2, 4)
|
||||
hopping = true
|
||||
|
||||
if position.x <= minX and hopSpeed < 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = false
|
||||
elif position.x >= maxX and hopSpeed > 0:
|
||||
hopSpeed = hopSpeed*-1
|
||||
$Sprite.flip_h = true
|
||||
BIN
NPCs/Arcade/GoatKid3/KickAnim/goat3kick2.png
Normal file
|
After Width: | Height: | Size: 616 B |
34
NPCs/Arcade/GoatKid3/KickAnim/goat3kick2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ce8kylpqax5m0"
|
||||
path="res://.godot/imported/goat3kick2.png-faaf63f3ba80b227f560ce48d296b520.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid3/KickAnim/goat3kick2.png"
|
||||
dest_files=["res://.godot/imported/goat3kick2.png-faaf63f3ba80b227f560ce48d296b520.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/Arcade/GoatKid3/KickAnim/goat3kick3.png
Normal file
|
After Width: | Height: | Size: 639 B |
34
NPCs/Arcade/GoatKid3/KickAnim/goat3kick3.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bttpcdaorhe0l"
|
||||
path="res://.godot/imported/goat3kick3.png-5a6f7b51737598286199487e31740771.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid3/KickAnim/goat3kick3.png"
|
||||
dest_files=["res://.godot/imported/goat3kick3.png-5a6f7b51737598286199487e31740771.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/Arcade/GoatKid3/KickAnim/goatkid2.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
34
NPCs/Arcade/GoatKid3/KickAnim/goatkid2.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://t7hi3ubhgo3j"
|
||||
path="res://.godot/imported/goatkid2.png-136c4d072e4073ef38c50abf713a5b75.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid3/KickAnim/goatkid2.png"
|
||||
dest_files=["res://.godot/imported/goatkid2.png-136c4d072e4073ef38c50abf713a5b75.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/Arcade/GoatKid3/PranceAnim/goatkid2prance.png
Normal file
|
After Width: | Height: | Size: 654 B |
34
NPCs/Arcade/GoatKid3/PranceAnim/goatkid2prance.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c8cucgr3kt3r7"
|
||||
path="res://.godot/imported/goatkid2prance.png-dda064518875b21f7e26fbd88e00eb15.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/Arcade/GoatKid3/PranceAnim/goatkid2prance.png"
|
||||
dest_files=["res://.godot/imported/goatkid2prance.png-dda064518875b21f7e26fbd88e00eb15.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
|
||||
81
NPCs/Arcade/GoatKid3/goat_kid_3.tscn
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
[gd_scene load_steps=11 format=3 uid="uid://c5hw3rt1is5f5"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_gwyxi"]
|
||||
[ext_resource type="Script" path="res://NPCs/Arcade/GoatKid3/GoatKid3.gd" id="2_sw4iu"]
|
||||
[ext_resource type="Resource" uid="uid://cq8ckonbneirp" path="res://NPCs/Arcade/GoatKid.dialogue" id="3_3pjim"]
|
||||
[ext_resource type="Texture2D" uid="uid://c8cucgr3kt3r7" path="res://NPCs/Arcade/GoatKid3/PranceAnim/goatkid2prance.png" id="3_hp52d"]
|
||||
[ext_resource type="Texture2D" uid="uid://ce8kylpqax5m0" path="res://NPCs/Arcade/GoatKid3/KickAnim/goat3kick2.png" id="4_3g2n6"]
|
||||
[ext_resource type="Texture2D" uid="uid://t7hi3ubhgo3j" path="res://NPCs/Arcade/GoatKid3/KickAnim/goatkid2.png" id="5_tc1ik"]
|
||||
[ext_resource type="Texture2D" uid="uid://bttpcdaorhe0l" path="res://NPCs/Arcade/GoatKid3/KickAnim/goat3kick3.png" id="5_ujuc8"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_68fp1"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("5_tc1ik")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("4_3g2n6")
|
||||
}, {
|
||||
"duration": 2.0,
|
||||
"texture": ExtResource("5_ujuc8")
|
||||
}, {
|
||||
"duration": 2.0,
|
||||
"texture": ExtResource("5_tc1ik")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Kick",
|
||||
"speed": 6.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("5_tc1ik")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_hp52d")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"Prance",
|
||||
"speed": 6.0
|
||||
}, {
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("5_tc1ik")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_im52w"]
|
||||
radius = 31.4006
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_pgnks"]
|
||||
size = Vector2(71, 7)
|
||||
|
||||
[node name="GoatKid3" instance=ExtResource("1_gwyxi")]
|
||||
script = ExtResource("2_sw4iu")
|
||||
dialogueResource = ExtResource("3_3pjim")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
position = Vector2(0, -43)
|
||||
sprite_frames = SubResource("SpriteFrames_68fp1")
|
||||
frame_progress = 0.758279
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -34.0
|
||||
offset_top = -71.0
|
||||
offset_right = 44.0
|
||||
offset_bottom = 3.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
position = Vector2(7, -30)
|
||||
shape = SubResource("CircleShape2D_im52w")
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="3"]
|
||||
position = Vector2(-0.5, -1)
|
||||
shape = SubResource("RectangleShape2D_pgnks")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
6
NPCs/ArcadeTurtle.png/ArcadeTurtle.dialogue
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
~ start
|
||||
|
||||
Samantha Jr: hi do you like my art i drew the car
|
||||
Samantha Jr: thank you im glad you like it
|
||||
|
||||
=> END
|
||||
15
NPCs/ArcadeTurtle.png/ArcadeTurtle.dialogue.import
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[remap]
|
||||
|
||||
importer="dialogue_manager_compiler_11"
|
||||
type="Resource"
|
||||
uid="uid://bddiyf22ui3tl"
|
||||
path="res://.godot/imported/ArcadeTurtle.dialogue-018dd89a02349b4f74a48b8289df1204.tres"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/ArcadeTurtle.png/ArcadeTurtle.dialogue"
|
||||
dest_files=["res://.godot/imported/ArcadeTurtle.dialogue-018dd89a02349b4f74a48b8289df1204.tres"]
|
||||
|
||||
[params]
|
||||
|
||||
defaults=true
|
||||
4
NPCs/ArcadeTurtle.png/ArcadeTurtle.gd
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
extends "res://NPCs/NPC.gd"
|
||||
|
||||
func _ready():
|
||||
dialogueResource = load("res://NPCs/ArcadeTurtle.png/ArcadeTurtle.dialogue")
|
||||
BIN
NPCs/ArcadeTurtle.png/ArcadeTurtle.png
Normal file
|
After Width: | Height: | Size: 903 B |
34
NPCs/ArcadeTurtle.png/ArcadeTurtle.png.import
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://tybnrmugphux"
|
||||
path="res://.godot/imported/ArcadeTurtle.png-6c13453dda22a738a8fbbfc19d98b879.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://NPCs/ArcadeTurtle.png/ArcadeTurtle.png"
|
||||
dest_files=["res://.godot/imported/ArcadeTurtle.png-6c13453dda22a738a8fbbfc19d98b879.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
|
||||
38
NPCs/ArcadeTurtle.png/ArcadeTurtle.tscn
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://bcg864lbcd1i0"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://doqfsp7yxools" path="res://NPCs/NPC.tscn" id="1_embhp"]
|
||||
[ext_resource type="Script" path="res://NPCs/ArcadeTurtle.png/ArcadeTurtle.gd" id="2_mqvtv"]
|
||||
[ext_resource type="Texture2D" uid="uid://tybnrmugphux" path="res://NPCs/ArcadeTurtle.png/ArcadeTurtle.png" id="3_51irh"]
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_p7v6n"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": ExtResource("3_51irh")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 5.0
|
||||
}]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_2awac"]
|
||||
radius = 47.5184
|
||||
|
||||
[node name="ArcadeTurtle" instance=ExtResource("1_embhp")]
|
||||
script = ExtResource("2_mqvtv")
|
||||
|
||||
[node name="Sprite" parent="." index="0"]
|
||||
sprite_frames = SubResource("SpriteFrames_p7v6n")
|
||||
|
||||
[node name="Panel" parent="Interactable" index="1"]
|
||||
offset_left = -35.0
|
||||
offset_top = -48.0
|
||||
offset_right = 36.0
|
||||
offset_bottom = 45.0
|
||||
|
||||
[node name="CollisionShape2D" parent="Talkable/InteractionArea" index="0"]
|
||||
shape = SubResource("CircleShape2D_2awac")
|
||||
|
||||
[editable path="Interactable"]
|
||||
[editable path="Interactable/ActionMenu"]
|
||||
[editable path="Talkable"]
|
||||
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
|
||||