Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
cfd6b3e827 | |||
d3d1972550 | |||
7fd91a42bc | |||
|
cf86b38dc5 | ||
4ce465effb | |||
9a3c5458b6 | |||
bab3cb36d6 | |||
61bba2b17a | |||
41e9c5a685 | |||
021a99fcd5 | |||
433908f225 | |||
ffd1361dd8 | |||
853b1d01eb | |||
6da977a4da | |||
00a4a54bea | |||
6ce7d1ef92 |
23
README.md
Normal file
23
README.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Ely and the Crab
|
||||
|
||||
A game by [kwarel](https://kwarel.itch.io/) and [ashpie](https://ashpie.com) (was Arisu).
|
||||
|
||||
It was made during the itch.io weekly game jam 162 (theme: Crabs).
|
||||
|
||||
[itch.io page](https://kwarel.itch.io/ely-and-the-crab)
|
||||
|
||||
## Licenses
|
||||
|
||||
- All 2D images are made by [kwarel](https://kwarel.itch.io/) © 2020 and are licensed under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/)
|
||||
- The following sound assets are made by [ashpie](https://ashpie.com) © 2020 and are licensed under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/):
|
||||
- Main title music (sounds/main_title.ogg)
|
||||
- Dialog letter by letter sound effets (sounds/gibberish.wav, sounds/gibberish2.wav)
|
||||
- Herbert sound effects and theme music (sounds/herbert*.ogg)
|
||||
- All dialogs are made by [kwarel](https://kwarel.itch.io/) and [ashpie](https://ashpie.com) © 2020 and are licensed under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/)
|
||||
- All code (including scripts), godot scenes and godot project files are licensed under [GPL-3.0](https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
- Fonts used in this project are public domains (we did not make any of those)
|
||||
- We also use [two songs by Chris Zabriskie](https://www.chriszabriskie.com/dtv/) and a sound effect that we picked on splice for the campfire
|
||||
|
||||
## Play the game
|
||||
|
||||
[itch.io page](https://kwarel.itch.io/ely-and-the-crab)
|
@ -5,9 +5,9 @@
|
||||
{"name": "Herbert", "text": "This coast is really nice, is it yours?"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "Hey-oh, hooman, 're you okay?"},
|
||||
{"name": "Ely", "text": "W-wait... Did you just say it was a recent oil tanker sinking?"},
|
||||
{"name": "Ely", "text": "W-wait... Did you just say it was a recent oil tanker sinking?", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "Hum... Yeah! It must have sank about a few days ago..."},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "...", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "Are you okay?"},
|
||||
{"name": "Ely", "text": "So... Yeah... Here's the thing:"}
|
||||
]
|
||||
|
@ -1,23 +1,23 @@
|
||||
[
|
||||
{"name": "Ely", "text": "I am a part of a non-profit organization."},
|
||||
{"name": "Ely", "text": "I am a part of a non-profit organization.", "expression": "smile"},
|
||||
{"name": "Herbert", "text": "A what?"},
|
||||
{"name": "Ely", "text": "A bunch of people doing things more or less selflessly."},
|
||||
{"name": "Ely", "text": "A bunch of people doing things more or less selflessly.", "expression": "smile"},
|
||||
{"name": "Herbert", "text": "Oh, that's nice!"},
|
||||
{"name": "Ely", "text": "We scan the ocean to find the garbage left by other hu-... uh... other [wave amp=20 freq=2]hoomans[/wave]."},
|
||||
{"name": "Ely", "text": "We scan the ocean to find the garbage left by other hu-... uh... other [wave amp=20 freq=2]hoomans[/wave].", "expression": "smile"},
|
||||
{"name": "Herbert", "text": "How neat!"},
|
||||
{"name": "Ely", "text": "We're mostly pals enjoying scuba diving together and collecting small funds for bigger organizations."},
|
||||
{"name": "Ely", "text": "And... you see, the oil tanker you found..."},
|
||||
{"name": "Ely", "text": "We were supposed to go through it and gather pieces of information for later dismantlement."},
|
||||
{"name": "Ely", "text": "But... as you can tell, it didn't go well."},
|
||||
{"name": "Ely", "text": "The sea was angry, thunderous even..."},
|
||||
{"name": "Ely", "text": "And we lost our ship."},
|
||||
{"name": "Ely", "text": "I don't even know were my friends are..."},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "But... as you can tell, it didn't go well.", "expression": "gasp"},
|
||||
{"name": "Ely", "text": "The sea was angry, thunderous even...", "expression": "gasp"},
|
||||
{"name": "Ely", "text": "And we lost our ship.", "expression": "gasp"},
|
||||
{"name": "Ely", "text": "I don't even know were my friends are...", "expression": "sad"},
|
||||
{"name": "Ely", "text": "...", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Ely", "text": "Crap..."},
|
||||
{"name": "Ely", "text": "... I don't know why I'm telling you all of that, it's not even what really happened..."},
|
||||
{"name": "Ely", "text": "Crap...", "expression": "listening"},
|
||||
{"name": "Ely", "text": "... I don't know why I'm telling you all of that, it's not even what really happened...", "expression": "listening"},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "I-I don't want you to know the truth..."},
|
||||
{"name": "Ely", "text": "I-I don't want you to know the truth...", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "That was a beautiful tale."},
|
||||
{"name": "Herbert", "text": "In a sense, it brings me hope to know you're aware that oil tankers are bad."},
|
||||
|
@ -1,54 +1,54 @@
|
||||
[
|
||||
{"name": "Ely", "text": "... You see, the oil tanker?"},
|
||||
{"name": "Ely", "text": "... You see, the oil tanker?", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "Yes."},
|
||||
{"name": "Ely", "text": "I worked there."},
|
||||
{"name": "Ely", "text": "I was the deck officer."},
|
||||
{"name": "Ely", "text": "We were on our way back home after 72 days at sea."},
|
||||
{"name": "Ely", "text": "The captain decided it was a good idea to take a shortcut."},
|
||||
{"name": "Ely", "text": "They... didn't follow the planned route."},
|
||||
{"name": "Ely", "text": "We hit something... and we sank."},
|
||||
{"name": "Ely", "text": "I lost consciousness and woke up here, alone."},
|
||||
{"name": "Ely", "text": "To be clear, I wasn't responsible for that accident."},
|
||||
{"name": "Ely", "text": "I was just trying to do my job and pay my rent..."},
|
||||
{"name": "Ely", "text": "I worked there.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "I was the deck officer.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "We were on our way back home after 72 days at sea.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "The captain decided it was a good idea to take a shortcut.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "They... didn't follow the planned route.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "We hit something... and we sank.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I lost consciousness and woke up here, alone.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "To be clear, I wasn't responsible for that accident.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "I was just trying to do my job and pay my rent...", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Ely", "text": "Gosh! Your damn cute face didn't make it easy."},
|
||||
{"name": "Ely", "text": "Gosh! Your damn cute face didn't make it easy.", "expression": "gasp"},
|
||||
{"name": "Herbert", "text": "Sorry, I only have one animation, the artist is lazy..."},
|
||||
{"name": "Herbert", "text": "So... is that it?"},
|
||||
{"name": "Ely", "text": "Yeah! Pretty much."},
|
||||
{"name": "Ely", "text": "Yeah! Pretty much.", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "Why did you tell me the truth?"},
|
||||
{"name": "Ely", "text": "wha-", "auto": true},
|
||||
{"name": "Ely", "text": "wha-", "timer": 0.4, "auto": true, "expression": "listening"},
|
||||
{"name": "Herbert", "text": "I thought we were telling tales."},
|
||||
{"name": "Ely", "text": "Y-yeah. True."},
|
||||
{"name": "Ely", "text": "I don't know. I find it really hard to lie."},
|
||||
{"name": "Ely", "text": "Furthermore, I think it's better to tell the truth."},
|
||||
{"name": "Ely", "text": "Y-yeah. True.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I don't know. I find it really hard to lie.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "Furthermore, I think it's better to tell the truth.", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "Is it really?"},
|
||||
{"name": "Ely", "text": "What do you mean?"},
|
||||
{"name": "Ely", "text": "What do you mean?", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "What does it change? Is the world a better place now?"},
|
||||
{"name": "Herbert", "text": "What does it accomplish?"},
|
||||
{"name": "Ely", "text": "I mean... Now you know it was hum-... hum... hoomans' fault."},
|
||||
{"name": "Ely", "text": "I mean... Now you know it was hum-... hum... hoomans' fault.", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "I already knew that. And besides, what could I [wave amp=20 freq=2]do[/wave] with this knowledge?"},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "Nothing..."},
|
||||
{"name": "Ely", "text": "You're just..."},
|
||||
{"name": "Ely", "text": "...", "expression": "sad"},
|
||||
{"name": "Ely", "text": "Nothing...", "expression": "sad"},
|
||||
{"name": "Ely", "text": "You're just...", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "A cute talking crab?"},
|
||||
{"name": "Ely", "text": "Yeah... A cute talking crab."},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "I'm sorry."},
|
||||
{"name": "Ely", "text": "I'm so sorry..."},
|
||||
{"name": "Ely", "text": "...", "expression": "listening"},
|
||||
{"name": "Ely", "text": "I'm sorry.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I'm so sorry...", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "You said you were just trying to do your job and pay your rent."},
|
||||
{"name": "Ely", "text": "Yes true."},
|
||||
{"name": "Ely", "text": "But I'm still responsible."},
|
||||
{"name": "Ely", "text": "I-I shouldn't have picked this job. I know it's bad for the environment."},
|
||||
{"name": "Ely", "text": "And participating in this system... ain't a pleasure at all."},
|
||||
{"name": "Ely", "text": "Uh. Crap."},
|
||||
{"name": "Ely", "text": "I'm so sorry."},
|
||||
{"name": "Ely", "text": "Yes true.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "But I'm still responsible.", "expression": "listening"},
|
||||
{"name": "Ely", "text": "I-I shouldn't have picked this job. I know it's bad for the environment.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "And participating in this system... ain't a pleasure at all.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "Uh. Crap.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I'm so sorry.", "expression": "sad"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "You had no choice but to pick this job."},
|
||||
{"name": "Ely", "text": "... I suppose..."},
|
||||
{"name": "Ely", "text": "Yes... That was the only way to pay my bills."},
|
||||
{"name": "Ely", "text": "... I suppose...", "expression": "listening"},
|
||||
{"name": "Ely", "text": "Yes... That was the only way to pay my bills.", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "..."},
|
||||
{"name": "Herbert", "text": "To be honest... It's okay."},
|
||||
{"name": "Herbert", "text": "You are in a system that requires you to take that job."},
|
||||
@ -56,14 +56,15 @@
|
||||
{"name": "Herbert", "text": "If I needed someone or something to blame it could be you."},
|
||||
{"name": "Herbert", "text": "But it feels like the system you're talking about is what's to blame."},
|
||||
{"name": "Herbert", "text": "What forced you to take the job really is eviler than you."},
|
||||
{"name": "Ely", "text": "[code]Actually it's \"more evil than\".[/code]"},
|
||||
{"name": "Ely", "text": "[code]Actually it's \"more evil than\".[/code]", "expression": "smile"},
|
||||
{"name": "Herbert", "text": "Welp imma take that back."},
|
||||
{"name": "Ely", "text": "Haha"},
|
||||
{"name": "Ely", "text": "Haha", "expression": "smile"},
|
||||
{"name": "Herbert", "text": "I'll say one last thing."},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "...", "expression": "listening"},
|
||||
{"name": "Herbert", "text": "Maybe some of us won't blame the system."},
|
||||
{"name": "Herbert", "text": "Maybe some of us will blame you."},
|
||||
{"name": "Herbert", "text": "And I cannot do anything about that."},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "Fair."}
|
||||
{"name": "Ely", "text": "...", "expression": "listening"},
|
||||
{"name": "Ely", "text": "Fair.", "expression": "listening"},
|
||||
{"animation": "fadeout", "timer": 2, "auto": true}
|
||||
]
|
||||
|
@ -1,4 +1,4 @@
|
||||
[
|
||||
{"name": "Herbert", "text": "There was some sort of weird goo floating around.", "upside_down": true, "timer": 6, "auto": true},
|
||||
{"name": "Herbert", "text": "So I decided to look for the source.", "upside_down": true, "timer": 6, "auto": true}
|
||||
{"name": "", "text": "There was some sort of weird goo floating around.", "upside_down": true},
|
||||
{"name": "", "text": "So I decided to look for the source.", "upside_down": true}
|
||||
]
|
||||
|
@ -1,10 +1,10 @@
|
||||
[
|
||||
{"timer": 2, "auto": true},
|
||||
{"animation": "fadein", "timer": 2, "auto": true},
|
||||
|
||||
{"name": "Ely", "text": "What a shame..."},
|
||||
{"name": "Ely", "text": "I don't like being alone."},
|
||||
{"name": "Ely", "text": "I just want to go home!"},
|
||||
{"name": "Ely", "text": "Hopefully someone will come by and rescue me..."},
|
||||
{"name": "Ely", "text": "What a shame...", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I don't like being alone.", "expression": "sad"},
|
||||
{"name": "Ely", "text": "I just want to go home!", "expression": "sad"},
|
||||
{"name": "Ely", "text": "Hopefully someone will come by and rescue me...", "expression": "sad"},
|
||||
|
||||
{"timer": 2, "auto": true},
|
||||
|
||||
@ -18,16 +18,16 @@
|
||||
|
||||
{"name": "Crab", "text": "Hey you!", "audio": "herbert_is_happy"},
|
||||
{"name": "Crab", "text": "You ok buddy?"},
|
||||
{"name": "Ely", "text": "I must be going crazy."},
|
||||
{"name": "Ely", "text": "I must be going crazy.", "expression": "gasp"},
|
||||
{"name": "Crab", "text": "You don't look [i]that[/i] crazy to me."},
|
||||
{"name": "Ely", "text": "You're a crab."},
|
||||
{"name": "Crab", "text": "Yes."},
|
||||
{"name": "Ely", "text": "You speak."},
|
||||
{"name": "Crab", "text": "Of course I do you muffinhead."},
|
||||
{"name": "Ely", "text": "Cuuuuute!", "expression": "blush"},
|
||||
{"name": "Ely", "text": "..."},
|
||||
{"name": "Ely", "text": "So... You're a cute talking crab."},
|
||||
{"name": "Crab", "text": "", "expression": "blush"},
|
||||
{"name": "Ely", "text": "Cuuuuute!", "expression": "cute"},
|
||||
{"name": "Ely", "text": "...", "expression": "smile"},
|
||||
{"name": "Ely", "text": "So... You're a cute talking crab.", "expression": "smile"},
|
||||
{"name": "Crab", "text": "", "expression": "cute"},
|
||||
{"name": "Ely", "text": "Do you have a name? [code](by any chance...)[/code]"},
|
||||
{"name": "Crab", "text": "The name's Herbert."},
|
||||
{"name": "Herbert", "text": "I am a [wave amp=20 freq=2]Pachygrapsus Marmoratus[/wave] as you [i]hoomans[/i] like to call us."},
|
||||
|
@ -1,6 +1,6 @@
|
||||
[
|
||||
{"animation": "fadein", "timer": 2, "auto": true},
|
||||
{"name": "Herbert", "text": "Finally I found the source.", "timer": 4, "auto": true, "upside_down": true},
|
||||
{"name": "Herbert", "text": "It was a recently sunk oil tanker.", "timer": 4, "auto": true, "upside_down": true},
|
||||
{"name": "Herbert", "text": "I had to investigate further.", "timer": 4, "auto": true, "upside_down": true}
|
||||
{"name": "", "text": "Finally I found the source.", "upside_down": true},
|
||||
{"name": "", "text": "It was a recently sunk oil tanker.", "upside_down": true},
|
||||
{"name": "", "text": "I had to investigate further.", "upside_down": true}
|
||||
]
|
||||
|
@ -1,3 +1,3 @@
|
||||
[
|
||||
{"name": "Herbert", "text": "The closer I got, the more oil there was.", "timer": 6, "auto": true, "upside_down": true}
|
||||
{"name": "", "text": "The closer I got, the more oil there was.", "upside_down": true}
|
||||
]
|
||||
|
@ -1,3 +1,3 @@
|
||||
[
|
||||
{"name": "Herbert", "text": "The inside was full of oil, I was really close.", "upside_down": true, "timer": 6, "auto": true}
|
||||
{"name": "", "text": "The inside was full of oil, I was really close.", "upside_down": true}
|
||||
]
|
||||
|
@ -1,4 +1,4 @@
|
||||
[
|
||||
{"name": "Herbert", "text": "And there it was, one of the tank was damaged.", "upside_down": true},
|
||||
{"name": "Herbert", "text": "I'm just a crab, I couldn't do anything about it.", "upside_down": true, "animation": "fadeout", "timer": 2}
|
||||
{"name": "", "text": "And there it was, one of the tank was damaged.", "upside_down": true},
|
||||
{"name": "", "text": "I'm just a crab, I couldn't do anything about it.", "upside_down": true, "animation": "fadeout", "timer": 2}
|
||||
]
|
||||
|
@ -1,5 +1,5 @@
|
||||
[
|
||||
{"name": "Herbert", "text": "Back at my home, there was goo everywhere.", "expression": "black"},
|
||||
{"name": "", "text": "Back at my home, there was goo everywhere.", "expression": "black"},
|
||||
{"animation": "fadein", "timer": 2, "auto": true},
|
||||
{"name": "Herbert", "text": "My friends and I were forced to move..."}
|
||||
{"name": "", "text": "My friends and I were forced to move..."}
|
||||
]
|
||||
|
9
fonts/dialog_default_font_bold.tres
Normal file
9
fonts/dialog_default_font_bold.tres
Normal file
@ -0,0 +1,9 @@
|
||||
[gd_resource type="DynamicFont" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://fonts/EnterCommand-Bold.ttf" type="DynamicFontData" id=1]
|
||||
|
||||
[resource]
|
||||
size = 32
|
||||
outline_color = Color( 0, 0, 0, 1 )
|
||||
extra_spacing_bottom = -6
|
||||
font_data = ExtResource( 1 )
|
File diff suppressed because it is too large
Load Diff
BIN
images/game1/ParralaxPoutre3.png
Normal file
BIN
images/game1/ParralaxPoutre3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
34
images/game1/ParralaxPoutre3.png.import
Normal file
34
images/game1/ParralaxPoutre3.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/ParralaxPoutre3.png-b5d3bc235ed07e42bde584c21cebcf92.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://images/game1/ParralaxPoutre3.png"
|
||||
dest_files=[ "res://.import/ParralaxPoutre3.png-b5d3bc235ed07e42bde584c21cebcf92.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
Binary file not shown.
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
images/icon.ico
Normal file
BIN
images/icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 894 B |
BIN
images/icon.png
BIN
images/icon.png
Binary file not shown.
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 164 B |
@ -8,7 +8,7 @@
|
||||
[node name="root" type="Node2D"]
|
||||
|
||||
[node name="CampfireBackground" parent="." instance=ExtResource( 2 )]
|
||||
frame = 14
|
||||
frame = 2
|
||||
|
||||
[node name="Herbert" parent="." instance=ExtResource( 1 )]
|
||||
visible = false
|
||||
|
@ -12,11 +12,12 @@ centered = false
|
||||
|
||||
[node name="FireCrackles" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 3 )
|
||||
volume_db = -6.0
|
||||
autoplay = true
|
||||
|
||||
[node name="Ely" type="AnimatedSprite" parent="."]
|
||||
frames = ExtResource( 2 )
|
||||
animation = "idle"
|
||||
frame = 74
|
||||
frame = 53
|
||||
playing = true
|
||||
centered = false
|
||||
|
@ -1,10 +1,11 @@
|
||||
[gd_scene load_steps=6 format=2]
|
||||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://scripts/campfire2.gd" type="Script" id=1]
|
||||
[ext_resource path="res://scenes/campfire/Herbert.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://scenes/campfire/CampfireBackground.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://scenes/dialogue.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://images/campfire/thechoice.tres" type="SpriteFrames" id=5]
|
||||
[ext_resource path="res://fonts/dialog_default_font_bold.tres" type="DynamicFont" id=6]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
||||
@ -32,3 +33,26 @@ visible = false
|
||||
frames = ExtResource( 5 )
|
||||
animation = "lie"
|
||||
centered = false
|
||||
|
||||
[node name="Lie" type="Label" parent="TheChoice"]
|
||||
margin_left = 127.633
|
||||
margin_top = 75.0
|
||||
margin_right = 167.633
|
||||
margin_bottom = 97.0
|
||||
custom_fonts/font = ExtResource( 6 )
|
||||
text = "Lie"
|
||||
align = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Tell the truth" type="Label" parent="TheChoice"]
|
||||
margin_top = 3.71011
|
||||
margin_right = 84.0
|
||||
margin_bottom = 25.7101
|
||||
custom_fonts/font = ExtResource( 6 )
|
||||
text = "Truth"
|
||||
align = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://images/Credits.png" type="Texture" id=1]
|
||||
[ext_resource path="res://scripts/credits.gd" type="Script" id=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
texture = ExtResource( 1 )
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=14 format=2]
|
||||
[gd_scene load_steps=16 format=2]
|
||||
|
||||
[ext_resource path="res://images/ui/dialogue_bg.png" type="Texture" id=1]
|
||||
[ext_resource path="res://fonts/dialog_default_font.tres" type="DynamicFont" id=2]
|
||||
@ -8,6 +8,8 @@
|
||||
[ext_resource path="res://BlackScreen.tscn" type="PackedScene" id=6]
|
||||
[ext_resource path="res://scripts/BlackScreen.gd" type="Script" id=7]
|
||||
[ext_resource path="res://scripts/ControlIndicator.gd" type="Script" id=8]
|
||||
[ext_resource path="res://sounds/gibberish.wav" type="AudioStream" id=9]
|
||||
[ext_resource path="res://sounds/gibberish2.wav" type="AudioStream" id=10]
|
||||
|
||||
[sub_resource type="VisualShaderNodeColorConstant" id=1]
|
||||
constant = Color( 0, 0, 0, 0.803922 )
|
||||
@ -212,3 +214,9 @@ fit_content_height = true
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="GibberishPlayer1" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 9 )
|
||||
|
||||
[node name="GibberishPlayer2" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 10 )
|
||||
|
@ -34,7 +34,7 @@ extents = Vector2( 13.4499, 41.9587 )
|
||||
[sub_resource type="RectangleShape2D" id=4]
|
||||
extents = Vector2( 6.44203, 23.0973 )
|
||||
|
||||
[sub_resource type="Shader" id=14]
|
||||
[sub_resource type="Shader" id=5]
|
||||
code = "shader_type canvas_item;
|
||||
uniform sampler2D tex_frg_3;
|
||||
uniform sampler2D tex_frg_7;
|
||||
@ -100,8 +100,8 @@ void light() {
|
||||
"
|
||||
custom_defines = ""
|
||||
|
||||
[sub_resource type="ShaderMaterial" id=13]
|
||||
shader = SubResource( 14 )
|
||||
[sub_resource type="ShaderMaterial" id=6]
|
||||
shader = SubResource( 5 )
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( 3 )
|
||||
@ -109,6 +109,10 @@ dialogue = "res://dialogues/game1.json"
|
||||
|
||||
[node name="Game" type="Node2D" parent="."]
|
||||
|
||||
[node name="GameControlIndicator" type="AnimatedSprite" parent="."]
|
||||
position = Vector2( 96, 70 )
|
||||
script = ExtResource( 8 )
|
||||
|
||||
[node name="Opening2" type="Node2D" parent="."]
|
||||
|
||||
[node name="Opening2Bg" type="AnimatedSprite" parent="Opening2"]
|
||||
@ -203,7 +207,7 @@ frames = ExtResource( 12 )
|
||||
centered = false
|
||||
|
||||
[node name="OpeningOver" type="AnimatedSprite" parent="Opening1"]
|
||||
material = SubResource( 13 )
|
||||
material = SubResource( 6 )
|
||||
frames = ExtResource( 1 )
|
||||
centered = false
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
[gd_scene load_steps=11 format=2]
|
||||
|
||||
[ext_resource path="res://scripts/menu/title_background.gd" type="Script" id=1]
|
||||
[ext_resource path="res://fonts/dialog_default_font.tres" type="DynamicFont" id=2]
|
||||
@ -7,12 +7,14 @@
|
||||
[ext_resource path="res://scripts/menu/MainMenu.gd" type="Script" id=5]
|
||||
[ext_resource path="res://images/main_menu/title_background_campfire.tres" type="SpriteFrames" id=6]
|
||||
[ext_resource path="res://images/main_menu/titleWithoutEly_loop.tres" type="SpriteFrames" id=7]
|
||||
[ext_resource path="res://scripts/main_menu.gd" type="Script" id=9]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=1]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource( 9 )
|
||||
|
||||
[node name="background" type="AnimatedSprite" parent="."]
|
||||
frames = ExtResource( 7 )
|
||||
@ -36,29 +38,27 @@ script = ExtResource( 1 )
|
||||
start_delay = 4.0
|
||||
|
||||
[node name="UI" type="Control" parent="."]
|
||||
margin_right = 40.0
|
||||
margin_bottom = 40.0
|
||||
margin_right = 192.0
|
||||
margin_bottom = 108.0
|
||||
script = ExtResource( 5 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Buttons" type="Control" parent="UI"]
|
||||
margin_right = 40.0
|
||||
margin_bottom = 40.0
|
||||
[node name="Buttons" type="VBoxContainer" parent="UI"]
|
||||
margin_left = 74.0
|
||||
margin_top = 19.0
|
||||
margin_right = 192.0
|
||||
margin_bottom = 74.0
|
||||
alignment = 2
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="PlayButton" type="Button" parent="UI/Buttons"]
|
||||
anchor_left = 3.875
|
||||
anchor_top = 1.35
|
||||
anchor_right = 3.875
|
||||
anchor_bottom = 1.35
|
||||
margin_left = -13.3871
|
||||
margin_top = -17.551
|
||||
margin_right = 30.6129
|
||||
margin_bottom = 2.449
|
||||
margin_top = 23.0
|
||||
margin_right = 118.0
|
||||
margin_bottom = 37.0
|
||||
custom_styles/focus = SubResource( 1 )
|
||||
custom_fonts/font = ExtResource( 2 )
|
||||
custom_colors/font_color = Color( 0.282353, 0.282353, 0.282353, 1 )
|
||||
@ -72,14 +72,9 @@ __meta__ = {
|
||||
scene_to_load = "res://scenes/campfire.tscn"
|
||||
|
||||
[node name="QuitButton" type="Button" parent="UI/Buttons"]
|
||||
anchor_left = 3.875
|
||||
anchor_top = 1.35
|
||||
anchor_right = 3.875
|
||||
anchor_bottom = 1.35
|
||||
margin_left = -13.3871
|
||||
margin_top = 2.449
|
||||
margin_right = 30.6129
|
||||
margin_bottom = 22.449
|
||||
margin_top = 41.0
|
||||
margin_right = 118.0
|
||||
margin_bottom = 55.0
|
||||
custom_styles/focus = SubResource( 2 )
|
||||
custom_fonts/font = ExtResource( 2 )
|
||||
custom_colors/font_color = Color( 0.282353, 0.282353, 0.282353, 1 )
|
||||
@ -90,5 +85,22 @@ script = ExtResource( 3 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="AnotherChoiceButton" type="Button" parent="UI/Buttons"]
|
||||
visible = false
|
||||
margin_top = 41.0
|
||||
margin_right = 118.0
|
||||
margin_bottom = 55.0
|
||||
custom_styles/focus = SubResource( 2 )
|
||||
custom_fonts/font = ExtResource( 2 )
|
||||
custom_colors/font_color = Color( 0.282353, 0.282353, 0.282353, 1 )
|
||||
custom_colors/font_color_hover = Color( 1, 1, 1, 1 )
|
||||
text = "Make another choice"
|
||||
flat = true
|
||||
script = ExtResource( 3 )
|
||||
__meta__ = {
|
||||
"_editor_description_": ""
|
||||
}
|
||||
scene_to_load = "res://scenes/campfire2.tscn"
|
||||
[connection signal="animation_finished" from="ely" to="ely" method="_on_background_animation_finished"]
|
||||
[connection signal="animation_finished" from="fire" to="fire" method="_on_background_animation_finished"]
|
||||
|
@ -25,52 +25,52 @@
|
||||
[ext_resource path="res://images/oil_tanker/OilTankerLeak_Midground_GooMask.png" type="Texture" id=23]
|
||||
[ext_resource path="res://images/oil_tanker/OilTankerCrabnimation.tres" type="SpriteFrames" id=24]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=6]
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 10, 34.563 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=7]
|
||||
[sub_resource type="RectangleShape2D" id=2]
|
||||
extents = Vector2( 10, 34.563 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=8]
|
||||
[sub_resource type="RectangleShape2D" id=3]
|
||||
extents = Vector2( 276.861, 9.9101 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=9]
|
||||
[sub_resource type="RectangleShape2D" id=4]
|
||||
extents = Vector2( 276.861, 9.9101 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=10]
|
||||
[sub_resource type="RectangleShape2D" id=5]
|
||||
extents = Vector2( 175.74, 9.07445 )
|
||||
|
||||
[sub_resource type="CircleShape2D" id=11]
|
||||
[sub_resource type="CircleShape2D" id=6]
|
||||
radius = 31.4057
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=20]
|
||||
[sub_resource type="RectangleShape2D" id=7]
|
||||
extents = Vector2( 10, 22.4756 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=12]
|
||||
[sub_resource type="RectangleShape2D" id=8]
|
||||
extents = Vector2( 10, 27.9493 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=13]
|
||||
[sub_resource type="RectangleShape2D" id=9]
|
||||
extents = Vector2( 10, 27.9493 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=14]
|
||||
[sub_resource type="RectangleShape2D" id=10]
|
||||
extents = Vector2( 20.5315, 7.16187 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=15]
|
||||
[sub_resource type="RectangleShape2D" id=11]
|
||||
extents = Vector2( 85.2849, 7.16187 )
|
||||
|
||||
[sub_resource type="SegmentShape2D" id=16]
|
||||
[sub_resource type="SegmentShape2D" id=12]
|
||||
b = Vector2( 70.2283, 33.9024 )
|
||||
|
||||
[sub_resource type="SegmentShape2D" id=17]
|
||||
[sub_resource type="SegmentShape2D" id=13]
|
||||
b = Vector2( 122.205, -7.65517 )
|
||||
|
||||
[sub_resource type="SegmentShape2D" id=18]
|
||||
[sub_resource type="SegmentShape2D" id=14]
|
||||
b = Vector2( 107.673, 44.0238 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=19]
|
||||
[sub_resource type="RectangleShape2D" id=15]
|
||||
extents = Vector2( 4.85875, 16.0913 )
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=21]
|
||||
[sub_resource type="RectangleShape2D" id=16]
|
||||
extents = Vector2( 4.85875, 16.0913 )
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
@ -127,7 +127,7 @@ collision_mask = 4
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall"]
|
||||
position = Vector2( -23.7448, 88.1799 )
|
||||
shape = SubResource( 6 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="Wall4" type="StaticBody2D" parent="InsideOilTanker2/walls"]
|
||||
collision_layer = 2147483652
|
||||
@ -138,7 +138,7 @@ __meta__ = {
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall4"]
|
||||
position = Vector2( 520.202, 91.1098 )
|
||||
shape = SubResource( 7 )
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="Wall2" type="StaticBody2D" parent="InsideOilTanker2/walls"]
|
||||
collision_layer = 2147483652
|
||||
@ -149,7 +149,7 @@ __meta__ = {
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall2"]
|
||||
position = Vector2( 249.14, 122.296 )
|
||||
shape = SubResource( 8 )
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[node name="Wall3" type="StaticBody2D" parent="InsideOilTanker2/walls"]
|
||||
collision_layer = 2147483652
|
||||
@ -160,7 +160,7 @@ __meta__ = {
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall3"]
|
||||
position = Vector2( 244.468, 58.9552 )
|
||||
shape = SubResource( 9 )
|
||||
shape = SubResource( 4 )
|
||||
|
||||
[node name="Wall5" type="StaticBody2D" parent="InsideOilTanker2/walls"]
|
||||
collision_layer = 2147483652
|
||||
@ -172,7 +172,7 @@ __meta__ = {
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall5"]
|
||||
position = Vector2( 342.076, 75.064 )
|
||||
rotation = 0.0123712
|
||||
shape = SubResource( 10 )
|
||||
shape = SubResource( 5 )
|
||||
|
||||
[node name="Wall6" type="StaticBody2D" parent="InsideOilTanker2/walls"]
|
||||
collision_layer = 2147483652
|
||||
@ -184,7 +184,7 @@ __meta__ = {
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/walls/Wall6"]
|
||||
position = Vector2( 168.01, 51.7275 )
|
||||
rotation = 0.0123712
|
||||
shape = SubResource( 11 )
|
||||
shape = SubResource( 6 )
|
||||
|
||||
[node name="NextTrigger" type="Area2D" parent="InsideOilTanker2"]
|
||||
collision_layer = 4
|
||||
@ -192,7 +192,7 @@ collision_mask = 4
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker2/NextTrigger"]
|
||||
position = Vector2( 330.844, 100.227 )
|
||||
shape = SubResource( 20 )
|
||||
shape = SubResource( 7 )
|
||||
|
||||
[node name="InsideOilTanker" type="AnimatedSprite" parent="."]
|
||||
frames = ExtResource( 3 )
|
||||
@ -219,55 +219,55 @@ centered = false
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall"]
|
||||
position = Vector2( 208.261, 91.1098 )
|
||||
shape = SubResource( 12 )
|
||||
shape = SubResource( 8 )
|
||||
|
||||
[node name="Wall2" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall2"]
|
||||
position = Vector2( -23.7448, 81.6604 )
|
||||
shape = SubResource( 13 )
|
||||
shape = SubResource( 9 )
|
||||
|
||||
[node name="Wall5" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall5"]
|
||||
position = Vector2( 6.44882, 51.7275 )
|
||||
shape = SubResource( 14 )
|
||||
shape = SubResource( 10 )
|
||||
|
||||
[node name="Wall6" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall6"]
|
||||
position = Vector2( 127.185, 119.399 )
|
||||
shape = SubResource( 15 )
|
||||
shape = SubResource( 11 )
|
||||
|
||||
[node name="Wall7" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall7"]
|
||||
position = Vector2( 10.2871, 55.1923 )
|
||||
shape = SubResource( 16 )
|
||||
shape = SubResource( 12 )
|
||||
|
||||
[node name="Wall9" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall9"]
|
||||
position = Vector2( 79.5423, 88.1799 )
|
||||
shape = SubResource( 17 )
|
||||
shape = SubResource( 13 )
|
||||
|
||||
[node name="Wall10" type="StaticBody2D" parent="InsideOilTanker/walls"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/walls/Wall10"]
|
||||
position = Vector2( -15.3507, 75.064 )
|
||||
shape = SubResource( 18 )
|
||||
shape = SubResource( 14 )
|
||||
|
||||
[node name="NextTrigger" type="Area2D" parent="InsideOilTanker"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/NextTrigger"]
|
||||
position = Vector2( 197.689, 97.7763 )
|
||||
shape = SubResource( 19 )
|
||||
shape = SubResource( 15 )
|
||||
|
||||
[node name="DialogueTrigger" type="Area2D" parent="InsideOilTanker"]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="InsideOilTanker/DialogueTrigger"]
|
||||
position = Vector2( 84.0628, 97.7763 )
|
||||
shape = SubResource( 21 )
|
||||
shape = SubResource( 16 )
|
||||
|
||||
[node name="OilTanker" type="AnimatedSprite" parent="."]
|
||||
frames = ExtResource( 2 )
|
||||
|
@ -11,7 +11,7 @@ const press_right = preload("res://images/Controls/PressRight.tres")
|
||||
var last_is_joy = false
|
||||
|
||||
func show_press(action : String):
|
||||
if action == 'ui_accept':
|
||||
if action == 'ui_accept' || action == 'interact':
|
||||
frames = press_a if last_is_joy else press_space
|
||||
if action == 'right':
|
||||
frames = press_right
|
||||
@ -24,7 +24,7 @@ func show_press(action : String):
|
||||
play('default')
|
||||
show()
|
||||
|
||||
func _input(event):
|
||||
func _input(_event):
|
||||
last_is_joy = false
|
||||
for b in [
|
||||
JOY_XBOX_A,
|
||||
|
@ -16,7 +16,7 @@ func start() -> void:
|
||||
|
||||
func load_dialogue(file_path) -> Array:
|
||||
var file = File.new()
|
||||
assert (file.file_exists(file_path))
|
||||
# assert (file.file_exists(file_path))
|
||||
|
||||
file.open(file_path, file.READ)
|
||||
var dialogue = parse_json(file.get_as_text())
|
||||
|
@ -10,8 +10,8 @@ onready var name_label = get_node(name_label_path) as RichTextLabel
|
||||
export (NodePath) var text_label_path
|
||||
onready var text_label = get_node(text_label_path) as RichTextLabel
|
||||
|
||||
export (NodePath) var expression_node_path
|
||||
onready var expression_node = get_node(expression_node_path) as RichTextLabel
|
||||
#export (NodePath) var expression_node_path
|
||||
#onready var expression_node = get_node(expression_node_path) as RichTextLabel
|
||||
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
@ -36,11 +36,11 @@ func _ready():
|
||||
$MarginContainer.hide()
|
||||
|
||||
func start_dialogue(dialog_path : String) -> DialogueAction:
|
||||
var dialogue = DialogueAction.new()
|
||||
dialogue.dialogue_file_path = dialog_path
|
||||
dialogue.dialogue_box = self
|
||||
dialogue.start()
|
||||
return dialogue
|
||||
var action = DialogueAction.new()
|
||||
action.dialogue_file_path = dialog_path
|
||||
action.dialogue_box = self
|
||||
action.start()
|
||||
return action
|
||||
|
||||
func start(_dialogue : Array):
|
||||
dialogue = _dialogue
|
||||
@ -96,11 +96,14 @@ func update() -> void:
|
||||
$MarginContainer/VBoxContainer.alignment = BoxContainer.ALIGN_END
|
||||
$MarginContainer/VBoxContainer.add_child_below_node($MarginContainer/VBoxContainer/NameContainer, $MarginContainer/VBoxContainer/TextContainer)
|
||||
|
||||
if text != '' and character_name != '':
|
||||
if text != '':
|
||||
name_label.bbcode_text = character_name
|
||||
name_label.rect_min_size.x = name_label.get_font('normal_font').get_string_size(name_label.text).x
|
||||
text_label.bbcode_text = text
|
||||
|
||||
if character_name == '': $MarginContainer/VBoxContainer/NameContainer.hide()
|
||||
else: $MarginContainer/VBoxContainer/NameContainer.show()
|
||||
|
||||
if text == "": $MarginContainer.hide()
|
||||
else: $MarginContainer.show()
|
||||
|
||||
@ -110,8 +113,11 @@ func update() -> void:
|
||||
var animation = line.get('animation', null)
|
||||
if animation != null:
|
||||
print('animate!' + animation)
|
||||
if animation == 'fadein':
|
||||
black_screen.modulate.a = 1
|
||||
black_screen.animate(animation, timer)
|
||||
elif expression == 'black':
|
||||
black_screen.modulate.a = 1
|
||||
black_screen.animate('black', 0)
|
||||
else:
|
||||
black_screen.animate(null, timer)
|
||||
@ -130,7 +136,15 @@ func animate_text():
|
||||
if text_label.text[text_label.visible_characters] == ' ':
|
||||
text_label.visible_characters += 1
|
||||
text_label.visible_characters += 1
|
||||
yield(get_tree().create_timer(0.4 if text_label.text[text_label.visible_characters - 1] == '.' else 0.05), 'timeout')
|
||||
|
||||
var c = text_label.text[text_label.visible_characters - 1]
|
||||
|
||||
if $MarginContainer.visible:
|
||||
if "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZÀàéÉçÇÈèùÙ.".rfind(c) >= 0:
|
||||
if character_name == 'Ely': $GibberishPlayer2.play()
|
||||
else: $GibberishPlayer1.play()
|
||||
|
||||
yield(get_tree().create_timer(0.4 if c == '.' else 0.05), 'timeout')
|
||||
if !Globals.ui_accept_tip:
|
||||
control_indicator.show_press('ui_accept')
|
||||
Globals.ui_accept_tip = true
|
||||
|
@ -1,3 +1,22 @@
|
||||
extends Node
|
||||
|
||||
var ui_accept_tip = false
|
||||
var ui_interact_flatfish_tip = false
|
||||
var did_already_play_once = false
|
||||
|
||||
func save_game():
|
||||
var file = File.new()
|
||||
file.open('user://globals.save', File.WRITE)
|
||||
file.store_line('1' if did_already_play_once else '0')
|
||||
file.close()
|
||||
print('saved')
|
||||
|
||||
func load_game():
|
||||
var file = File.new()
|
||||
if not file.file_exists("user://savegame.save"):
|
||||
return
|
||||
|
||||
file.open('user://globals.save', File.READ)
|
||||
var d = file.get_line()
|
||||
did_already_play_once = true if d == '1' else false
|
||||
print('loaded')
|
||||
|
@ -9,9 +9,9 @@ var previous_tracks : Array
|
||||
func play(music, offset=0, duration=1):
|
||||
print('Play music: ' + music)
|
||||
var path = "res://sounds/" + music + ".ogg"
|
||||
if !File.new().file_exists(path):
|
||||
path = "res://sounds/" + music
|
||||
assert(File.new().file_exists(path))
|
||||
# if !File.new().file_exists(path):
|
||||
# path = "res://sounds/" + music
|
||||
# assert(File.new().file_exists(path))
|
||||
var stream = load(path)
|
||||
|
||||
target_track = get_free_track()
|
||||
@ -46,7 +46,7 @@ func get_free_track() -> AudioStreamPlayer:
|
||||
free_track = track
|
||||
if free_track == null:
|
||||
free_track = AudioStreamPlayer.new()
|
||||
print('yo')
|
||||
free_track.volume_db = -8
|
||||
add_child(free_track)
|
||||
print(free_track)
|
||||
return free_track
|
||||
|
@ -1,6 +1,6 @@
|
||||
extends Node2D
|
||||
|
||||
onready var ely = $CampfireBackground
|
||||
onready var ely = $CampfireBackground/Ely
|
||||
onready var herbert = $Herbert
|
||||
onready var dialogue_box = $UI/Dialogue
|
||||
onready var the_choice = $TheChoice
|
||||
@ -9,6 +9,8 @@ export (String, FILE, '*.json') var end_1_dialogue
|
||||
export (String, FILE, '*.json') var end_truth_dialogue
|
||||
export (String, FILE, '*.json') var end_lie_dialogue
|
||||
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
func _ready():
|
||||
assert(end_1_dialogue != null)
|
||||
assert(end_truth_dialogue != null)
|
||||
@ -24,6 +26,7 @@ var choice = -1
|
||||
|
||||
func make_choice(choice : int):
|
||||
the_choice.hide()
|
||||
music_player.play("Chris Zabriskie - Direct to Video - 07 It's Always Too Late to Start Over")
|
||||
yield(dialogue_box.start_dialogue(end_truth_dialogue if choice == 0 else end_lie_dialogue), 'end')
|
||||
get_tree().change_scene("res://scenes/credits.tscn")
|
||||
|
||||
|
10
scripts/credits.gd
Normal file
10
scripts/credits.gd
Normal file
@ -0,0 +1,10 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
func _ready():
|
||||
Globals.did_already_play_once = true
|
||||
Globals.save_game()
|
||||
|
||||
func _input(event):
|
||||
if event.is_action_pressed("ui_accept"):
|
||||
get_tree().change_scene("res://scenes/main_menu.tscn")
|
@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
signal can_leave
|
||||
|
||||
var playing = false
|
||||
|
||||
onready var player_fab = preload('res://scenes/game1/Player.tscn')
|
||||
@ -9,6 +11,8 @@ var player_camera : Camera2D
|
||||
onready var dialogue_box = $UI/Dialog
|
||||
export (String, FILE, '*.json') var dialogue
|
||||
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
onready var levels = [
|
||||
#'TestLogEntity',
|
||||
'Level1',
|
||||
@ -23,11 +27,13 @@ export var skipToLevel = ''
|
||||
var current_level = -1
|
||||
var spawn_pos = Vector2()
|
||||
var exit_points = []
|
||||
var can_leave = false
|
||||
|
||||
func _ready():
|
||||
assert(dialogue != null)
|
||||
|
||||
if skipToLevel != '':
|
||||
can_leave = true
|
||||
$Opening1.queue_free()
|
||||
start_game()
|
||||
while levels[current_level] != skipToLevel:
|
||||
@ -35,6 +41,7 @@ func _ready():
|
||||
return
|
||||
|
||||
yield(get_tree().create_timer(6), "timeout")
|
||||
music_player.play("Chris Zabriskie - Direct to Video - 03 I Don't See the Branches, I See the Leaves")
|
||||
$Opening1.play('default')
|
||||
$Opening1/Mask.play('default')
|
||||
$Opening1/OpeningOver.play('default')
|
||||
@ -43,8 +50,13 @@ func _ready():
|
||||
|
||||
$Opening2/Player.sleep = false
|
||||
yield(dialogue_box.start_dialogue(dialogue), 'end')
|
||||
can_leave = true
|
||||
emit_signal("can_leave")
|
||||
|
||||
func start_game():
|
||||
$Opening2/Player.sleep = true
|
||||
if !can_leave:
|
||||
yield(self, 'can_leave')
|
||||
# Hide opening
|
||||
$Opening2.queue_free()
|
||||
next_level()
|
||||
@ -110,6 +122,7 @@ func spawn_entities(level : Node):
|
||||
# Spawn point
|
||||
for cell in tm.get_used_cells_by_id(tileset.find_tile_by_name('start')):
|
||||
spawn_pos = cell
|
||||
tm.set_cell(cell.x, cell.y, -1)
|
||||
|
||||
# Exit points
|
||||
for cell in tm.get_used_cells_by_id(tileset.find_tile_by_name('finish')):
|
||||
@ -157,7 +170,7 @@ func move():
|
||||
move_left()
|
||||
trying_to_move = false
|
||||
|
||||
func _process(delta):
|
||||
func _process(_delta):
|
||||
interact()
|
||||
move()
|
||||
|
||||
@ -217,6 +230,19 @@ func move_left():
|
||||
|
||||
func check_exit() -> bool:
|
||||
var player_pos = (player.position - Vector2(8, 8)) / 16
|
||||
|
||||
if !Globals.ui_interact_flatfish_tip:
|
||||
var level = $Game.get_node(levels[current_level])
|
||||
var shown = false
|
||||
for e in level.get_node('Entities').get_children():
|
||||
if e is Flatfish && e.position == player.position:
|
||||
$GameControlIndicator.show_press('interact')
|
||||
$GameControlIndicator.position = player.position + Vector2(0, 8 + 16)
|
||||
shown = true
|
||||
break
|
||||
if !shown:
|
||||
$GameControlIndicator.hide()
|
||||
|
||||
print(player_pos)
|
||||
for exit in exit_points:
|
||||
if player_pos == exit:
|
||||
@ -255,6 +281,9 @@ func interact():
|
||||
break
|
||||
|
||||
if fish != null:
|
||||
Globals.ui_interact_flatfish_tip = true
|
||||
$GameControlIndicator.hide()
|
||||
|
||||
fish.appear()
|
||||
yield(get_tree().create_timer(0.2), "timeout")
|
||||
|
||||
@ -268,5 +297,7 @@ func interact():
|
||||
|
||||
fish.disappear()
|
||||
|
||||
player.rotation_degrees = fmod(player.rotation_degrees, 360.0)
|
||||
|
||||
is_interacting = false
|
||||
if fish != null: interact()
|
||||
|
@ -41,7 +41,7 @@ func _input(event):
|
||||
|
||||
dir = Vector2(x, y)
|
||||
|
||||
func _process(delta):
|
||||
func _process(_delta):
|
||||
if linear_velocity.length_squared() < 1:
|
||||
$Sprite.play('default')
|
||||
elif linear_velocity.x > 0:
|
||||
|
9
scripts/main_menu.gd
Normal file
9
scripts/main_menu.gd
Normal file
@ -0,0 +1,9 @@
|
||||
extends Node2D
|
||||
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
func _ready():
|
||||
music_player.play('main_title')
|
||||
Globals.load_game()
|
||||
if Globals.did_already_play_once:
|
||||
$UI/Buttons/AnotherChoiceButton.show()
|
@ -1,5 +1,7 @@
|
||||
extends Node
|
||||
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
func _ready():
|
||||
$Buttons/PlayButton.grab_focus()
|
||||
for button in $Buttons.get_children():
|
||||
@ -7,6 +9,8 @@ func _ready():
|
||||
|
||||
func _on_Button_pressed(scene_to_load : String):
|
||||
if scene_to_load != "":
|
||||
music_player.fade_out()
|
||||
get_tree().change_scene(scene_to_load)
|
||||
else:
|
||||
music_player.fade_out()
|
||||
get_tree().quit()
|
||||
|
@ -1,11 +1,16 @@
|
||||
extends Node2D
|
||||
|
||||
signal can_leave
|
||||
var can_leave = false
|
||||
|
||||
onready var dialogue_box = $UI/Dialog
|
||||
onready var music_player = get_node('/root/MusicPlayer') as MusicPlayer
|
||||
|
||||
#0
|
||||
onready var oil_tanker = $OilTanker
|
||||
onready var crab_0 = $OilTanker/Crab
|
||||
export (String, FILE, "*.json") var dialogue_1
|
||||
var leaving_0 = false
|
||||
|
||||
#1
|
||||
onready var oil_tanker_inside_1 = $InsideOilTanker
|
||||
@ -41,6 +46,8 @@ func _ready():
|
||||
next_trigger_2.connect("body_entered", self, 'end_step_2')
|
||||
|
||||
yield(dialogue_box.start_dialogue(dialogue_1), 'end')
|
||||
can_leave = true
|
||||
emit_signal('can_leave')
|
||||
|
||||
# oil_tanker.frame = 12
|
||||
# end_step_0()
|
||||
@ -51,26 +58,47 @@ func dialogue_2(body : Node):
|
||||
print('end_step_1')
|
||||
if body.name == "Player":
|
||||
yield(dialogue_box.start_dialogue(dialogue_2), 'end')
|
||||
can_leave = true
|
||||
emit_signal('can_leave')
|
||||
|
||||
func end_step_0():
|
||||
print('end_step_0')
|
||||
if crab_0.frame > 1:
|
||||
leaving_0 = true
|
||||
|
||||
if !can_leave:
|
||||
yield(self, 'can_leave')
|
||||
can_leave = false
|
||||
|
||||
oil_tanker.queue_free()
|
||||
player_1.sleep = false
|
||||
|
||||
func end_step_1(body : Node):
|
||||
print('end_step_1')
|
||||
if body.name == "Player":
|
||||
player_1.sleep = true
|
||||
|
||||
if !can_leave:
|
||||
yield(self, 'can_leave')
|
||||
can_leave = false
|
||||
|
||||
oil_tanker_inside_1.queue_free()
|
||||
|
||||
player_2.sleep = false
|
||||
camera_2.current = true
|
||||
yield(dialogue_box.start_dialogue(dialogue_3), 'end')
|
||||
can_leave = true
|
||||
emit_signal('can_leave')
|
||||
|
||||
func end_step_2(body : Node):
|
||||
print('end_step_2')
|
||||
if body.name == "Player":
|
||||
player_2.sleep = true
|
||||
|
||||
if !can_leave:
|
||||
yield(self, 'can_leave')
|
||||
can_leave = false
|
||||
|
||||
yield(dialogue_box.start_dialogue(dialogue_4), 'end')
|
||||
oil_tanker_inside_2.queue_free()
|
||||
herbert_must_go_3.play('default')
|
||||
@ -78,10 +106,11 @@ func end_step_2(body : Node):
|
||||
yield(get_tree().create_timer(1), "timeout")
|
||||
yield(dialogue_box.start_dialogue(dialogue_5), 'end')
|
||||
yield(get_tree().create_timer(0.2), "timeout")
|
||||
music_player.fade_out()
|
||||
get_tree().change_scene("res://scenes/campfire2.tscn")
|
||||
|
||||
func _input(event):
|
||||
if oil_tanker != null:
|
||||
if oil_tanker != null && !leaving_0:
|
||||
if event.is_action_pressed('right'):
|
||||
if !crab_0.is_playing():
|
||||
crab_0.play('default')
|
||||
|
@ -18,7 +18,6 @@ func _ready():
|
||||
|
||||
dialogue_box.connect('update', self, 'update_camera')
|
||||
|
||||
yield(get_tree().create_timer(2.0), 'timeout')
|
||||
yield(dialogue_box.start_dialogue(intro_dialogue), 'end')
|
||||
get_tree().change_scene("res://scenes/game1.tscn")
|
||||
|
||||
|
@ -17,5 +17,5 @@ force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
edit/loop=true
|
||||
compress/mode=0
|
||||
|
Binary file not shown.
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/Chris Zabriskie - Direct to Video - 03 I Don't See the Branches, I See the Leaves.ogg-7a0547bf1d516755a7b69367e9f6573a.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/Chris Zabriskie - Direct to Video - 03 I Don't See the Branches, I See the Leaves.ogg"
|
||||
dest_files=[ "res://.import/Chris Zabriskie - Direct to Video - 03 I Don't See the Branches, I See the Leaves.ogg-7a0547bf1d516755a7b69367e9f6573a.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
Binary file not shown.
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/Chris Zabriskie - Direct to Video - 07 It's Always Too Late to Start Over.ogg-0c87f633d9f4f7ca0cb0ddc35e26b788.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/Chris Zabriskie - Direct to Video - 07 It's Always Too Late to Start Over.ogg"
|
||||
dest_files=[ "res://.import/Chris Zabriskie - Direct to Video - 07 It's Always Too Late to Start Over.ogg-0c87f633d9f4f7ca0cb0ddc35e26b788.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
BIN
sounds/gibberish.wav
Normal file
BIN
sounds/gibberish.wav
Normal file
Binary file not shown.
21
sounds/gibberish.wav.import
Normal file
21
sounds/gibberish.wav.import
Normal file
@ -0,0 +1,21 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/gibberish.wav-d9ccae3969716aecb07896cc5967f4f1.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/gibberish.wav"
|
||||
dest_files=[ "res://.import/gibberish.wav-d9ccae3969716aecb07896cc5967f4f1.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/gibberish2.wav
Normal file
BIN
sounds/gibberish2.wav
Normal file
Binary file not shown.
21
sounds/gibberish2.wav.import
Normal file
21
sounds/gibberish2.wav.import
Normal file
@ -0,0 +1,21 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamSample"
|
||||
path="res://.import/gibberish2.wav-6ec18f6f246c055727b749c364482200.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/gibberish2.wav"
|
||||
dest_files=[ "res://.import/gibberish2.wav-6ec18f6f246c055727b749c364482200.sample" ]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop=false
|
||||
compress/mode=0
|
BIN
sounds/main_title.ogg
Normal file
BIN
sounds/main_title.ogg
Normal file
Binary file not shown.
15
sounds/main_title.ogg.import
Normal file
15
sounds/main_title.ogg.import
Normal file
@ -0,0 +1,15 @@
|
||||
[remap]
|
||||
|
||||
importer="ogg_vorbis"
|
||||
type="AudioStreamOGGVorbis"
|
||||
path="res://.import/main_title.ogg-ccd8b7af008d3af3848694e6df920f8a.oggstr"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://sounds/main_title.ogg"
|
||||
dest_files=[ "res://.import/main_title.ogg-ccd8b7af008d3af3848694e6df920f8a.oggstr" ]
|
||||
|
||||
[params]
|
||||
|
||||
loop=true
|
||||
loop_offset=0
|
Loading…
Reference in New Issue
Block a user