Compare commits

...

No commits in common. "startpoint" and "stable" have entirely different histories.

269 changed files with 227718 additions and 1341 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
*~
.directory
godot
build

369
.tmp
View file

@ -1,369 +0,0 @@
[gd_resource type="TileSet" load_steps=23 format=2]
[ext_resource type="Texture" path="res://tile full.tex" id=0]
[sub_resource type="ConvexPolygonShape2D" id=1]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -32, 32, -32, 32, 32, -32, 32, -32, -32 )
[sub_resource type="ConvexPolygonShape2D" id=2]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=11]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 28, -32, 28, -32, -32 )
[sub_resource type="ConvexPolygonShape2D" id=12]
custom_solver_bias=0.0
points=PoolVector2Array( 27, -32, 27, 15, 25, 21, 21.115, 25.3147, 11.2565, 26.8224, -32, 28, -32, -32 )
[sub_resource type="ConvexPolygonShape2D" id=35]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 32, -32, 32, -31.8891, -27.3414, -29, -30 )
[sub_resource type="ConvexPolygonShape2D" id=36]
custom_solver_bias=0.0
points=PoolVector2Array( -27, -32, 32, -32, -29, -30 )
[sub_resource type="ConvexPolygonShape2D" id=37]
custom_solver_bias=0.0
points=PoolVector2Array( -31, -32, 33, -32, 33, 32, -27, 32, -29, 30, -31, 28 )
[sub_resource type="ConvexPolygonShape2D" id=38]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -32, 32, -32, 32, 28, 30, 30, 28, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=30]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -32, 27.4498, -32.0095, 31.9963, -27.7854, 32.0174, 32.0416, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=20]
custom_solver_bias=0.0
points=PoolVector2Array( -13, -27, 13, -27, 20.1871, -23.398, 26, -16, 26, 18, 22, 24, 12, 27, -11.8241, 27.0544, -22.7264, 24.6188, -27, 19, -26.9018, -15.1633, -21.7986, -22.5862, -18, -25 )
[sub_resource type="ConvexPolygonShape2D" id=41]
custom_solver_bias=0.0
points=PoolVector2Array( -27, 32, 32, -28, 32.0174, 31.9257 )
[sub_resource type="ConvexPolygonShape2D" id=40]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -27, -30.1058, -27.0105, 28, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=23]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -32, 27, -32, -32, 28 )
[sub_resource type="ConvexPolygonShape2D" id=3]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -32, 32, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=24]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 28, -28, -32 )
[sub_resource type="ConvexPolygonShape2D" id=4]
custom_solver_bias=0.0
points=PoolVector2Array( -21.2298, -23.8952, -16.2848, -26.453, -9.37893, -26.9645, 32, -28, 32, 32, -27, 32, -26.601, -15.7957, -24.4696, -20.3144 )
[sub_resource type="ConvexPolygonShape2D" id=5]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -28, 32, -28, 32, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=6]
custom_solver_bias=0.0
points=PoolVector2Array( -32, -28, 13.8965, -27.135, 19.9498, -24.2363, 24.2127, -19.4618, 25.4063, -15.7105, 26, 32, -32, 32 )
[sub_resource type="ConvexPolygonShape2D" id=7]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 32, -28, 32, -27.4817, -32.0967 )
[sub_resource type="ConvexPolygonShape2D" id=8]
custom_solver_bias=0.0
points=PoolVector2Array( 32, -32, 32, 32, -32, 32, -32, -32 )
[sub_resource type="ConvexPolygonShape2D" id=9]
custom_solver_bias=0.0
points=PoolVector2Array( 27, -32, 27, 32, -32, 32, -32, -32 )
[sub_resource type="ConvexPolygonShape2D" id=10]
custom_solver_bias=0.0
points=PoolVector2Array( 32.0174, -32.3287, 32.2493, 27.9823, -9.96833, 27.1704, -21.5666, 24.9667, -24.4662, 22.763, -27, 17, -26.9018, -31.7488 )
[resource]
0/name="Suelo"
0/texture=null
0/tex_offset=Vector2( 0, 0 )
0/material=null
0/modulate=Color( 1, 1, 1, 1 )
0/region=Rect2( 0, 0, 320, 320 )
0/occluder_offset=Vector2( 160, 160 )
0/occluder=null
0/navigation_offset=Vector2( 160, 160 )
0/navigation=null
0/shape_offset=Vector2( 160, 160 )
0/shapes=[ ]
1/name="Rampa_LR"
1/texture=null
1/tex_offset=Vector2( 0, 0 )
1/material=null
1/modulate=Color( 1, 1, 1, 1 )
1/region=Rect2( 320, 256, 64, 64 )
1/occluder_offset=Vector2( 32, 32 )
1/occluder=null
1/navigation_offset=Vector2( 32, 32 )
1/navigation=null
1/shape_offset=Vector2( 32, 32 )
1/shapes=[ ]
2/name="Rampa_RL"
2/texture=null
2/tex_offset=Vector2( 0, 0 )
2/material=null
2/modulate=Color( 1, 1, 1, 1 )
2/region=Rect2( 512, 256, 64, 64 )
2/occluder_offset=Vector2( 32, 32 )
2/occluder=null
2/navigation_offset=Vector2( 32, 32 )
2/navigation=null
2/shape_offset=Vector2( 32, 32 )
2/shapes=[ ]
3/name="Arriba_Izquierda"
3/texture=null
3/tex_offset=Vector2( 0, 0 )
3/material=null
3/modulate=Color( 1, 1, 1, 1 )
3/region=Rect2( 0, 0, 64, 64 )
3/occluder_offset=Vector2( 32, 32 )
3/occluder=null
3/navigation_offset=Vector2( 32, 32 )
3/navigation=null
3/shape_offset=Vector2( 32, 32 )
3/shapes=[ ]
4/name="Arriba"
4/texture=null
4/tex_offset=Vector2( 0, 0 )
4/material=null
4/modulate=Color( 1, 1, 1, 1 )
4/region=Rect2( 64, 0, 64, 64 )
4/occluder_offset=Vector2( 32, 32 )
4/occluder=null
4/navigation_offset=Vector2( 32, 32 )
4/navigation=null
4/shape_offset=Vector2( 32, 32 )
4/shapes=[ ]
5/name="Arriba_Derecha"
5/texture=null
5/tex_offset=Vector2( 0, 0 )
5/material=null
5/modulate=Color( 1, 1, 1, 1 )
5/region=Rect2( 128, 0, 64, 64 )
5/occluder_offset=Vector2( 32, 32 )
5/occluder=null
5/navigation_offset=Vector2( 32, 32 )
5/navigation=null
5/shape_offset=Vector2( 32, 32 )
5/shapes=[ ]
6/name="Izquierda"
6/texture=null
6/tex_offset=Vector2( 0, 0 )
6/material=null
6/modulate=Color( 1, 1, 1, 1 )
6/region=Rect2( 0, 64, 64, 64 )
6/occluder_offset=Vector2( 32, 32 )
6/occluder=null
6/navigation_offset=Vector2( 32, 32 )
6/navigation=null
6/shape_offset=Vector2( 32, 32 )
6/shapes=[ ]
7/name="Centro"
7/texture=null
7/tex_offset=Vector2( 0, 0 )
7/material=null
7/modulate=Color( 1, 1, 1, 1 )
7/region=Rect2( 64, 64, 64, 64 )
7/occluder_offset=Vector2( 32, 32 )
7/occluder=null
7/navigation_offset=Vector2( 32, 32 )
7/navigation=null
7/shape_offset=Vector2( 32, 32 )
7/shapes=[ ]
8/name="Derecha"
8/texture=null
8/tex_offset=Vector2( 0, 0 )
8/material=null
8/modulate=Color( 1, 1, 1, 1 )
8/region=Rect2( 128, 64, 64, 64 )
8/occluder_offset=Vector2( 32, 32 )
8/occluder=null
8/navigation_offset=Vector2( 32, 32 )
8/navigation=null
8/shape_offset=Vector2( 32, 32 )
8/shapes=[ ]
9/name="Abajo_Izquierda"
9/texture=null
9/tex_offset=Vector2( 0, 0 )
9/material=null
9/modulate=Color( 1, 1, 1, 1 )
9/region=Rect2( 0, 128, 64, 64 )
9/occluder_offset=Vector2( 32, 32 )
9/occluder=null
9/navigation_offset=Vector2( 32, 32 )
9/navigation=null
9/shape_offset=Vector2( 32, 32 )
9/shapes=[ ]
10/name="Abajo"
10/texture=null
10/tex_offset=Vector2( 0, 0 )
10/material=null
10/modulate=Color( 1, 1, 1, 1 )
10/region=Rect2( 64, 128, 64, 64 )
10/occluder_offset=Vector2( 32, 32 )
10/occluder=null
10/navigation_offset=Vector2( 32, 32 )
10/navigation=null
10/shape_offset=Vector2( 32, 32 )
10/shapes=[ ]
11/name="Abajo_Derecha"
11/texture=null
11/tex_offset=Vector2( 0, 0 )
11/material=null
11/modulate=Color( 1, 1, 1, 1 )
11/region=Rect2( 128, 128, 64, 64 )
11/occluder_offset=Vector2( 32, 32 )
11/occluder=null
11/navigation_offset=Vector2( 32, 32 )
11/navigation=null
11/shape_offset=Vector2( 32, 32 )
11/shapes=[ ]
12/name="Inner_Derecha_Abajo"
12/texture=null
12/tex_offset=Vector2( 0, 0 )
12/material=null
12/modulate=Color( 1, 1, 1, 1 )
12/region=Rect2( 256, 256, 64, 64 )
12/occluder_offset=Vector2( 32, 32 )
12/occluder=null
12/navigation_offset=Vector2( 32, 32 )
12/navigation=null
12/shape_offset=Vector2( 32, 32 )
12/shapes=[ , ]
13/name="Inner_Derecha_Arriba"
13/texture=null
13/tex_offset=Vector2( 0, 0 )
13/material=null
13/modulate=Color( 1, 1, 1, 1 )
13/region=Rect2( 256, 192, 64, 64 )
13/occluder_offset=Vector2( 32, 32 )
13/occluder=null
13/navigation_offset=Vector2( 32, 32 )
13/navigation=null
13/shape_offset=Vector2( 32, 32 )
13/shapes=[ ]
14/name="Inner_Izquierda_Arriba"
14/texture=null
14/tex_offset=Vector2( 0, 0 )
14/material=null
14/modulate=Color( 1, 1, 1, 1 )
14/region=Rect2( 192, 192, 64, 64 )
14/occluder_offset=Vector2( 32, 32 )
14/occluder=null
14/navigation_offset=Vector2( 32, 32 )
14/navigation=null
14/shape_offset=Vector2( 32, 32 )
14/shapes=[ ]
15/name="Inner_Izquierda_Abajo"
15/texture=null
15/tex_offset=Vector2( 0, 0 )
15/material=null
15/modulate=Color( 1, 1, 1, 1 )
15/region=Rect2( 192, 256, 64, 64 )
15/occluder_offset=Vector2( 32, 32 )
15/occluder=null
15/navigation_offset=Vector2( 32, 32 )
15/navigation=null
15/shape_offset=Vector2( 32, 32 )
15/shapes=[ ]
16/name="Unico"
16/texture=null
16/tex_offset=Vector2( 0, 0 )
16/material=null
16/modulate=Color( 1, 1, 1, 1 )
16/region=Rect2( 192, 64, 64, 64 )
16/occluder_offset=Vector2( 32, 32 )
16/occluder=null
16/navigation_offset=Vector2( 32, 32 )
16/navigation=null
16/shape_offset=Vector2( 32, 32 )
16/shapes=[ ]
17/name="Rampa1"
17/texture=null
17/tex_offset=Vector2( 0, 0 )
17/material=null
17/modulate=Color( 1, 1, 1, 1 )
17/region=Rect2( 0, 192, 64, 64 )
17/occluder_offset=Vector2( 32, 32 )
17/occluder=null
17/navigation_offset=Vector2( 32, 32 )
17/navigation=null
17/shape_offset=Vector2( 32, 32 )
17/shapes=[ ]
18/name="Rampa2"
18/texture=null
18/tex_offset=Vector2( 0, 0 )
18/material=null
18/modulate=Color( 1, 1, 1, 1 )
18/region=Rect2( 64, 192, 64, 64 )
18/occluder_offset=Vector2( 32, 32 )
18/occluder=null
18/navigation_offset=Vector2( 32, 32 )
18/navigation=null
18/shape_offset=Vector2( 32, 32 )
18/shapes=[ ]
19/name="Rampa3"
19/texture=null
19/tex_offset=Vector2( 0, 0 )
19/material=null
19/modulate=Color( 1, 1, 1, 1 )
19/region=Rect2( 64, 256, 64, 64 )
19/occluder_offset=Vector2( 32, 32 )
19/occluder=null
19/navigation_offset=Vector2( 32, 32 )
19/navigation=null
19/shape_offset=Vector2( 32, 32 )
19/shapes=[ ]
20/name="Rampa4"
20/texture=null
20/tex_offset=Vector2( 0, 0 )
20/material=null
20/modulate=Color( 1, 1, 1, 1 )
20/region=Rect2( 0, 256, 64, 64 )
20/occluder_offset=Vector2( 32, 32 )
20/occluder=null
20/navigation_offset=Vector2( 32, 32 )
20/navigation=null
20/shape_offset=Vector2( 32, 32 )
20/shapes=[ ]

Binary file not shown.

BIN
Fonts/pixelated_regular.fnt Normal file

Binary file not shown.

77144
Fonts/pixelated_regular.inc Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
Fonts/pixelated_title.fnt Normal file

Binary file not shown.

121090
Fonts/pixelated_title.inc Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

5
LICENSE_FONTS Normal file
View file

@ -0,0 +1,5 @@
Press Start 2P by CodeMan38
(Open Font License)
https://fonts.google.com/specimen/Press+Start+2P?selection.family=Press+Start+2P

View file

@ -0,0 +1 @@
,darias,darias-laptop,19.10.2018 06:24,file:///home/darias/.config/libreoffice/4;

178
Locales/locales.csv Normal file
View file

@ -0,0 +1,178 @@
id,es,en,de,EXPLANATIONS
PLAY_GAME,Jugar,Play,Starten,
SETTINGS,Ajustes,Settings,Optionen,
ABOUT,Info,About,Über,
SWITCH_SCREEN_CONTROLS,Usar botones táctiles,Use onscreen controls,Touch-Steuerung anzeigen,
SWITCH_RETRO_EFFECT,Simular pantalla retro,Simulate retro TV,Röhrenfernseher simulieren,
SWITCH_MUSIC,Música,Music,Musik,
SWITCH_SOUND,Sonidos,Sound,Ton,
SWITCH_BOTTOM_PARTICLES,Resaltar final del nivel,Show level end,,
BTTN_BACK,Volver,Back,Zurück,
TEXT_LICENSE,"El código fuente de este juego está licenciado bajo Geneal Public License versión 3. Todos los recursos gráficos, sonidos y música han sido creados por nosotros y están licenciados como Creative Commons Attribution-Non Commercial-Share Alike 4.0. La tipografía utilizada es Press Start 2P creada por CodeMan38 (Open Font License)
Puedes obtener el código fuente y los recusos en gitlab.com/dariasteam/cows-revenge
Hecho en Godot Engine 2.1.5 (MIT)","This game's code is licensed as General Public License version 3. All the graphics, sounds and music resources were made by us and are published as Creative Commons Attribution-Non Commercial-Share Alike 4.0 International. Font is Press Start 2P by CodeMan38 (Open Font License)
You can get the source code and assets at gitlab.com/dariasteam/cows-revenge
Made with Godot Engine 2.1.5 (MIT)
","Der Code dieses Spiels ist unter der General Public License Version 3 lizensiert. Alle Grafiken, Klänge und Musikstücke wurden von uns erstellt und unter Creative Commons Attribution-Non Commercial-Share Alike 4.0 International veröffentlicht. Als Schriftart wird Press Start 2P von CodeMan38 unter der Open Font License verwendet.
Der Quell-Code und alle weiteren Materialien stehen unter gitlab.com/dariasteam/cows-revenge zur Verfügung.
Erstellt mit Godot Engine 2.1.5 (MIT)",
CHAPTERS,Capítulos,Chapters,Kapitel,
EP1,La escuela,The school,Die Schule,
EP2,Gatear antes de caminar,Crawl before you walk,"Erst krabbeln, dann laufen",
EP3,Independizándose,Independence,Unabhängigkeit,
EP4,Una ubre y sus consecuencias,An udder and her consequences,Ein Euter und seine Folgen,
EP5,Siempre fiel,Always faithful,Immer treu,
EP6,Ucronía,Uchronia,Uchronie,
EP7,Sístole y Diástole,Systole and Diastole,Systole und Diastole,
EP8,Anfibios,Amphibious,Amphibisch,
EP9,R.U.B.E.N,R.U.B.E.N,R.U.B.E.N,
UFO_JAIL_COUNTER,Vuelve cuando hayas salvado a todas las gallinas. Te quedan: ,Come back when you have rescued all the hens. Remaining:,Komm wieder wenn du alle Hennen gerettet hast. Verbleibend: ,
DANIEL_INFO,"dariasteam94@gmail.com
Mastodon.social/@darias
- Código
- Gráficos
- Música
- Animaciones","dariasteam94@gmail.com
mastodon.social/@darias
- Code
- Sprites
- Music
- Animations","dariasteam94@gmail.com
Mastodon.social/@darias
- Code
- Sprites
- Musik
- Animationen",
YANARA_INFO,"needafreefall-@hotmail.com
twitter.com/yanaronna
instagam.com/yanaronna
- Gráficos
- Animaciones
- Diseño de personajes","needafreefall-@hotmail.com
twitter.com/yanaronna
instagam.com/yanaronna
- Sprites
- Animations
- Character design","needafreefall-@hotmail.com
twitter.com/yanaronna
instagam.com/yanaronna
- Sprites
- Animationen
- Charaktergestaltung",
BUY_HEART,Corazón,Heart,Herz,
BUY_MILK,Leche,Milk,Milch,
BTTN_LIFTOFF,Despegar,Liftoff,Abheben,
BTTN_RESUME,Reanudar,Resume,Fortfahren,
BTTN_RESET,Reiniciar,Reset,Zurücksetzen,
BTTN_EXIT,Salir,Exit,Verlassen,
BTTN_RESET_LEVEL,Reiniciar nivel,Reset level,Ebene zurücksetzen,
BTTN_MAIN_MENU,Ir al menú principal,Go to main menu,Zum Hauptmenü,
UFO_STORE,UFO Store,UFO Store,UFO Store,
TUT_0,Este camino está bloqueado. Busca otra forma de desplazarte.,This way is blocked. Find another path.,Dieser weg ist versperrt. Finde einen anderen.,
TUT_1,Utiliza las teclas de dirección para moverte,Use arrows buttons to move,Laufe mit den Pfeiltasten,
TUT_2,Pulsa A o el botón del resorte para saltar por encima de estos bloques.,Press A or the space button to jump above these blocks,Drücke A oder die Leertaste um über diese Blöcke zu springen,
TUT_3,Puedes subir a las ramas de los árboles saltando desde abajo,You can climb to the branches jumping from below,Kletter auf Zweige indem du von unten hochspringst,
TUT_4,Salta!,Jump!,Spring!,
TUT_5,Puedes volver a bajar pulsando abajo,You can go down by pressing down button,Drücke nach unten um dich fallen zu lassen,
TUT_6,"Recoge cencerros para comprar mejoras.
",Collect cowbells and buy upgrades,Sammel Kuhglocken um dir Verbesserungen zu kaufen,
TUT_7,Bien hecho!,Well done!,Gut gemacht!,
TUT_8,"Si recoges muchos cencerros en muy poco tiempo conseguirás bonificaciones!
",If you collect a lot of cowbells quickly you'll gain a bonus,"Wenn du schnell viele Kuhglocken sammelst, erhältst du einen Bonus",
TUT_9,"Puedes guardar los cencerros en la nave volviendo a ella para ser abducido en cualquier momento.
",You can store the cowbells in the space ship by going back to it to be abducted anytime,Du kannst Kuhglocken im UFO bunkern wenn du zurückkehrst und dich erneut entführen lässt,
TUT_10,"A veces es más seguro no continuar avanzando si nada indica que el camino continúa
",Sometimes is safer to stop if you see the path finishing,"Manchmal ist es sicherer anzuhalten, wenn du merkst dass der Weg endet",
TUT_11,"Esta vez era broma, pero no vuelvas a hacerlo!",It was joke ,"War nur ein Scherz, aber pass nächstes Mal mehr auf",
TUT_12,"¡Cuidado! Eso que ves es un carnicero, para aniquilarlo salta sobre su cabeza","Caution! That is a butcher, jump on his head to defeat him.","Achtung! Dort ist ein Metzger, springe auf seinen Kopf um ihn zu besiegen",
TUT_13,"Si has perdido vida puedes recuperarla recogiendo corazones
",You can recover your life with hearts,Du kannst deine Leben mit Herzen widerherstellen,
TUT_14,"Recoge manzanas para poder producir leche con la que atacar
",Collect apples to produce milk and being able to attack,Sammel Äpfel um Milch zu produzieren and angreifen zu können,
TUT_15,"Ataca con la tecla S o el botón de la ubre. Conmuta entre leche desnatada o semidesnatada con R o el botón en blanco.
",Press S or the udder button to attack. Change between skimmed and semi-skimmed milk with R or the black button,Drücke S oder den Euter-Knopf um anzugreifen. Wechsel zwischen Magermilch und fettarmer Milch mit R oder dem schwarzen Knopf,
TUT_16,"Menudo pasillo más largo, ¿eh?","Such a long corridor, uh?","Was ein langer Gang, ne?",
TUT_17,Rompe la jaula acercándote a ella para liberar a los animales,Break the cage by touching it and free the animals,Breche den Käfig auf indem du ihn berührst und befreie die Tiere,
TUT_18,Vuelve a la nave y pulsa la tecla arriba para ser abducido,Get back to the ship and press up to be abducted,Gehe zurück ins UFO indem du Hoch drückst und dich entführen lässt,
TUT_19,En este juego NO respetamos las leyes de la física. Puedes saltar y en el aire modificar tu dirección.,In this game we DON'T obey the laws of physics. You can jump and change your direction in the air.,In diesem Spiel folgen wir den Gesetzen der Physik NICHT. Während du springst kannst du in der Luft die Richtung ändern,
MAP3_TEXT0,A veces la maleza es tan densa que te impide ver. ¡Abre bien los ojos!,Sometimes the bushes is so dense don't allow you to see beyond. Keep your eyes open!,"Manche Büsche sind so dicht, dass man nicht durch sie hindurchsehen kann. Halte die Augen offen!",
,,,,
,,,,
,,,,
CHICKEN_ADVICE_0,Vamos señores wuuu!,Cmon! Yeehaw,Auf gehts! Vollgas!,LITERAL_TRANSLATION
CHICKEN_ADVICE_1,Los astronautas no existen,Nasa is a lie,Die Mondlandung war nachgedreht,MEME (flat eartch and nasa conspiracy)
CHICKEN_ADVICE_2,e=mc²,e=mc²,e=mc²,KEEP
CHICKEN_ADVICE_3,e_e,e_e,e_e,KEEP
CHICKEN_ADVICE_4,Wiii,Wiii,Wiii,"LITERAL_TRANSLATION (its like a sound, not the console)"
CHICKEN_ADVICE_5,cocococo,cluck cluck cluck cluck,gack gack gack gack,LITERAL_TRANSLATION (sound made by a hen)
CHICKEN_ADVICE_6,Zzz...,Zzz…,-,LITERAL_TRANSLATION (sound for sleep)
CHICKEN_ADVICE_7,¡Ya era hora!,It was about time!,Wurde aber auch Zeit!,LITERAL_TRANSLATION
CHICKEN_ADVICE_8,:D,:D,:D,KEEP
CHICKEN_ADVICE_9,#NotAllMen,#NotAllMen,#NotAllMen,KEEP
CHICKEN_ADVICE_10,Aléjate primo aléjate,Get out of this place,Verpiss dich von meinem Körper!,LITERAL_TRANSLATION
CHICKEN_ADVICE_11,Efectivamente,Indeed,Tatsächlich,LITERAL_TRANSLATION
CHICKEN_ADVICE_12,Porque quiero que sepas que tú para mi eres un amigo pa siempre,I want you to know that for me you are a true friend forever,"Du musst wissen, wirst ",SIMILAR_TRANSLATION (what a drunk person would say to his best friend)
CHICKEN_ADVICE_13,La gravedad no existe,The earth is flat,Die Erde ist eine Scheibe,MEME (flat eartch and nasa conspiracy)
CHICKEN_ADVICE_14,La caida de la gran babilonia,Tim's your uncle,,MEME (random)
CHICKEN_ADVICE_15,FUAAAA!!,Zzz…,,MEME (random)
CHICKEN_ADVICE_16,Tú no me mandas,I dont receive orders from you,Ich lass mir von dir nichts sagen,LITERAL_TRANSLATION
CHICKEN_ADVICE_17,:C,:C,:C,KEEP
CHICKEN_ADVICE_18,No te pongas nervioso,Dont get nervous,Nicht nervös werden,LITERAL_TRANSLATION
CHICKEN_ADVICE_19,¿Dónde está la contaminacion que yo la vea?,"Will, will Will will Will Wills will?",,MEME (random)
CHICKEN_ADVICE_20,seh seh seh seh,yep yep yep,,LITERAL_TRANSLATION (say yes a lot of times)
CHICKEN_ADVICE_21,Tu crees que arcadio va a llevar el coche al para?,,,MEME (random)
CHICKEN_ADVICE_22,La psicología es útil,The psychology is useful,Die Psychologie ist nützlich,MEME (random)
CHICKEN_ADVICE_23,C++ > Java,C++ > Java,C++ > Java,KEEP
CHICKEN_ADVICE_24,GNUs Not Unix,GNUs Not Unix,GNUs Not Unix,KEEP
CHICKEN_ADVICE_25,Salchichas comodoro,Are you talkin to me?,,MEME (random)
CHICKEN_ADVICE_26,Ostia el workbook!,And I say HEEEEEEEYYYY Whats going on?,,MEME (random)
CHICKEN_ADVICE_27,Macarrones con tomatico ,ring ring ring ring ring ring ring BANANA PHONE!,Ich esse gerne Sauerkraut und tanze gerne Polka,MEME (random)
CHICKEN_ADVICE_28,Yo soy tu padre,I am your father,Ich bin dein Vater,LITERAL_TRANSLATION
CHICKEN_ADVICE_29,No quiero hablar contigo,I dont wanna talk to you,Ich will nicht mit dir reden,LITERAL_TRANSLATION
CHICKEN_ADVICE_30,Déjame en paz,Let me alone,Lass mich in Frieden,LITERAL_TRANSLATION
CHICKEN_ADVICE_31,...,,,KEEP
CHICKEN_ADVICE_32,La oronja verde o amanita phalloides es el hongo más venenoso del mundo,Amanita phalloides or death cap is the most poisonous fungi in the world,Der Grüne Knollenblätterpilz oder Grüne Gift-Wulstling ist der giftigste Pilz der Welt,LITERAL_TRANSLATION
CHICKEN_ADVICE_33,Poesía eres tú,You are poetry,,SIMILAR_TRANSLATION (the original is a sentence from a spanish poem)
CHICKEN_ADVICE_34,Illuminati confirmed,Illuminati confirmed,,KEEP
CHICKEN_ADVICE_35,Soy dueño de la canaca,I have to go to Walmart,,MEME (random)
CHICKEN_ADVICE_36,Yo soy un pollo cobarde,But will it blend?,,MEME (random)
CHICKEN_ADVICE_37,"¡Macrocéfalo, anfitrión, Rocambole, ectoplasma, filoxera, caníbal!",Billions of blue blistering boiled and barbecued barnacles!,,SIMILAR_TRANSLATION (some random insults of Captain Haddock from tintin series )
CHICKEN_ADVICE_38,"Para pasar a binario solo debes dividir entre 2, el resultado son los restos ordenados al revés","To change a number to binary you only have to divide it by 2, the result are the remainings in inverse order",,LITERAL_TRANSLATION
CHICKEN_ADVICE_39,Si no estás conmigo eres mi enemigo,If you are not with me then you are my enemy,,LITERAL_TRANSLATION
CHICKEN_ADVICE_40,Mírame a los ojos cuando te hablo,Look at my eyes when i'm talking to you,,LITERAL_TRANSLATION
CHICKEN_ADVICE_41,¡Duro con ellos!,Go and get hard on them!,,LITERAL_TRANSLATION
CHICKEN_ADVICE_42,"Rambo está en la trinchera, tiene una herida de bala en la pierna",I cant feel my legs!,,SIMILAR_TRANSLATION (a sentence from the rambo saga)
CHICKEN_ADVICE_43,Sosio aflójate un eurito ahí,Hey man give me a buck plz,,SIMILAR_TRANSLATION (the thing a yonki would say asking you money)
CHICKEN_ADVICE_44,"Mira no más, esta cara, este cuerpo. Tú jamás tendrás este cuerpo","Oh dear look at my pretty face, isn't it fabulous?",,SIMILAR_TRANSLATION (the thing a very egotistical person would say about how beautifull face or body has)
CHICKEN_ADVICE_45,¡Mi pueblo se muere por falta de conocimiento!,Checkmate atheist!,,MEME (random)
CHICKEN_ADVICE_46,"Y volé de él, y él voló allá por la arbolada",I believe I can flyyy,,MEME (random)
CHICKEN_ADVICE_47,Yo soy un pirata y tu mente es el mar y la psicología es mi barco,Im a pirate and your mind is the sea and the psichology is my boat,,MEME (random)
CHICKEN_ADVICE_48,"Si recomiendas a la gente usar homeopatía, te sugiero amablemente que te vayas a hacer puñetas",If water has memory then homeopathy is full of shit,,SIMILAR_TRANSLATION (homeopathy is a serious scam and health problem)
CHICKEN_ADVICE_49,"Si estás en un bosque y gritas y nadie te oye, ¿Por qué sigo suspendiendo Álgebra?","If you are in a forest a shout and no one hears you, why I keep failing Algebra?",,LITERAL_TRANSLATION (the phylosophicall problem of forest and sound but with my own problems in it)
CHICKEN_ADVICE_50,Deja de xorfirar anda,Stop xorfiring now,,MEME (random)
CHICKEN_ADVICE_51,Para mí será un placer vencerte,For me it would be a pleasure to defeat you,,SIMILAR_TRANSLATION (the thing a classic bad guy from a comic would say to the hero)
CHICKEN_ADVICE_52,No me toques que yo no te he tocao,Dont touch me cause I didn't touched you!,,LITERAL_TRANSLATION
CHICKEN_ADVICE_53,"A que no adivinas quién fue primero, ¿Mi huevo o yo?","I bet you can answer this, which was first, my egg or me?",,LITERAL_TRANSLATION (another phylosophicall question but tweaked to be said by a hen)
CHICKEN_ADVICE_54,"¡Ay vida mía, soy taaan desdichada!",I am soo unfortunate!,,LITERAL_TRANSLATION
CHICKEN_ADVICE_55,Ay quién tuviera la dicha que tiene el gallo,What does the fox say?,,MEME (veguely related with hens if possible)
CHICKEN_ADVICE_56,"¡Tengo miedo, tengo miedo, tengo miego, tengo muchísimo miedo!",Im so so so afraid!,,LITERAL_TRANSLATION
CHICKEN_ADVICE_57,"¿Y qué hago mi niño, me lo cargo al hombro?",Look at my horse my horse is amazing,,MEME (random)
CHICKEN_ADVICE_58,Eres un mago Harry,You're a wizard harry,Du bist ein Zauberer Harry,LITERAL_TRANSLATION
CHICKEN_ADVICE_59,Me hago pipí :/,I have to wee :/,Ich muss Pipi machen :/,LITERAL_TRANSLATION
CHICKEN_ADVICE_60,Dime algo que no sepa ya,Tell me something I didnt know,,LITERAL_TRANSLATION
CHICKEN_ADVICE_61,No puedo ni confirmar ni desmentir que yo sea un pollo,I can neither confirm nor deny Im a chicken,,LITERAL_TRANSLATION (joke with the CIA first tweet)
CHICKEN_ADVICE_62,Pienso luego existo,I think therefore I exist,,LITERAL_TRANSLATION (Cogito ergo sum)
CHICKEN_ADVICE_63,Pos coman pinocha,Yolooo,,MEME (random)
1 id es en de EXPLANATIONS
2 PLAY_GAME Jugar Play Starten
3 SETTINGS Ajustes Settings Optionen
4 ABOUT Info About Über
5 SWITCH_SCREEN_CONTROLS Usar botones táctiles Use onscreen controls Touch-Steuerung anzeigen
6 SWITCH_RETRO_EFFECT Simular pantalla retro Simulate retro TV Röhrenfernseher simulieren
7 SWITCH_MUSIC Música Music Musik
8 SWITCH_SOUND Sonidos Sound Ton
9 SWITCH_BOTTOM_PARTICLES Resaltar final del nivel Show level end
10 BTTN_BACK Volver Back Zurück
11 TEXT_LICENSE El código fuente de este juego está licenciado bajo Geneal Public License versión 3. Todos los recursos gráficos, sonidos y música han sido creados por nosotros y están licenciados como Creative Commons Attribution-Non Commercial-Share Alike 4.0. La tipografía utilizada es Press Start 2P creada por CodeMan38 (Open Font License) Puedes obtener el código fuente y los recusos en gitlab.com/dariasteam/cows-revenge Hecho en Godot Engine 2.1.5 (MIT) This game's code is licensed as General Public License version 3. All the graphics, sounds and music resources were made by us and are published as Creative Commons Attribution-Non Commercial-Share Alike 4.0 International. Font is Press Start 2P by CodeMan38 (Open Font License) You can get the source code and assets at gitlab.com/dariasteam/cows-revenge Made with Godot Engine 2.1.5 (MIT) Der Code dieses Spiels ist unter der General Public License Version 3 lizensiert. Alle Grafiken, Klänge und Musikstücke wurden von uns erstellt und unter Creative Commons Attribution-Non Commercial-Share Alike 4.0 International veröffentlicht. Als Schriftart wird Press Start 2P von CodeMan38 unter der Open Font License verwendet. Der Quell-Code und alle weiteren Materialien stehen unter gitlab.com/dariasteam/cows-revenge zur Verfügung. Erstellt mit Godot Engine 2.1.5 (MIT)
12 CHAPTERS Capítulos Chapters Kapitel
13 EP1 La escuela The school Die Schule
14 EP2 Gatear antes de caminar Crawl before you walk Erst krabbeln, dann laufen
15 EP3 Independizándose Independence Unabhängigkeit
16 EP4 Una ubre y sus consecuencias An udder and her consequences Ein Euter und seine Folgen
17 EP5 Siempre fiel Always faithful Immer treu
18 EP6 Ucronía Uchronia Uchronie
19 EP7 Sístole y Diástole Systole and Diastole Systole und Diastole
20 EP8 Anfibios Amphibious Amphibisch
21 EP9 R.U.B.E.N R.U.B.E.N R.U.B.E.N
22 UFO_JAIL_COUNTER Vuelve cuando hayas salvado a todas las gallinas. Te quedan: Come back when you have rescued all the hens. Remaining: Komm wieder wenn du alle Hennen gerettet hast. Verbleibend:
23 DANIEL_INFO dariasteam94@gmail.com Mastodon.social/@darias - Código - Gráficos - Música - Animaciones dariasteam94@gmail.com mastodon.social/@darias - Code - Sprites - Music - Animations dariasteam94@gmail.com Mastodon.social/@darias - Code - Sprites - Musik - Animationen
24 YANARA_INFO needafreefall-@hotmail.com twitter.com/yanaronna instagam.com/yanaronna - Gráficos - Animaciones - Diseño de personajes needafreefall-@hotmail.com twitter.com/yanaronna instagam.com/yanaronna - Sprites - Animations - Character design needafreefall-@hotmail.com twitter.com/yanaronna instagam.com/yanaronna - Sprites - Animationen - Charaktergestaltung
25 BUY_HEART Corazón Heart Herz
26 BUY_MILK Leche Milk Milch
27 BTTN_LIFTOFF Despegar Liftoff Abheben
28 BTTN_RESUME Reanudar Resume Fortfahren
29 BTTN_RESET Reiniciar Reset Zurücksetzen
30 BTTN_EXIT Salir Exit Verlassen
31 BTTN_RESET_LEVEL Reiniciar nivel Reset level Ebene zurücksetzen
32 BTTN_MAIN_MENU Ir al menú principal Go to main menu Zum Hauptmenü
33 UFO_STORE UFO Store UFO Store UFO Store
34 TUT_0 Este camino está bloqueado. Busca otra forma de desplazarte. This way is blocked. Find another path. Dieser weg ist versperrt. Finde einen anderen.
35 TUT_1 Utiliza las teclas de dirección para moverte Use arrows buttons to move Laufe mit den Pfeiltasten
36 TUT_2 Pulsa A o el botón del resorte para saltar por encima de estos bloques. Press A or the space button to jump above these blocks Drücke A oder die Leertaste um über diese Blöcke zu springen
37 TUT_3 Puedes subir a las ramas de los árboles saltando desde abajo You can climb to the branches jumping from below Kletter auf Zweige indem du von unten hochspringst
38 TUT_4 Salta! Jump! Spring!
39 TUT_5 Puedes volver a bajar pulsando abajo You can go down by pressing down button Drücke nach unten um dich fallen zu lassen
40 TUT_6 Recoge cencerros para comprar mejoras. Collect cowbells and buy upgrades Sammel Kuhglocken um dir Verbesserungen zu kaufen
41 TUT_7 Bien hecho! Well done! Gut gemacht!
42 TUT_8 Si recoges muchos cencerros en muy poco tiempo conseguirás bonificaciones! If you collect a lot of cowbells quickly you'll gain a bonus Wenn du schnell viele Kuhglocken sammelst, erhältst du einen Bonus
43 TUT_9 Puedes guardar los cencerros en la nave volviendo a ella para ser abducido en cualquier momento. You can store the cowbells in the space ship by going back to it to be abducted anytime Du kannst Kuhglocken im UFO bunkern wenn du zurückkehrst und dich erneut entführen lässt
44 TUT_10 A veces es más seguro no continuar avanzando si nada indica que el camino continúa Sometimes is safer to stop if you see the path finishing Manchmal ist es sicherer anzuhalten, wenn du merkst dass der Weg endet
45 TUT_11 Esta vez era broma, pero no vuelvas a hacerlo! It was joke War nur ein Scherz, aber pass nächstes Mal mehr auf
46 TUT_12 ¡Cuidado! Eso que ves es un carnicero, para aniquilarlo salta sobre su cabeza Caution! That is a butcher, jump on his head to defeat him. Achtung! Dort ist ein Metzger, springe auf seinen Kopf um ihn zu besiegen
47 TUT_13 Si has perdido vida puedes recuperarla recogiendo corazones You can recover your life with hearts Du kannst deine Leben mit Herzen widerherstellen
48 TUT_14 Recoge manzanas para poder producir leche con la que atacar Collect apples to produce milk and being able to attack Sammel Äpfel um Milch zu produzieren and angreifen zu können
49 TUT_15 Ataca con la tecla S o el botón de la ubre. Conmuta entre leche desnatada o semidesnatada con R o el botón en blanco. Press S or the udder button to attack. Change between skimmed and semi-skimmed milk with R or the black button Drücke S oder den Euter-Knopf um anzugreifen. Wechsel zwischen Magermilch und fettarmer Milch mit R oder dem schwarzen Knopf
50 TUT_16 Menudo pasillo más largo, ¿eh? Such a long corridor, uh? Was ein langer Gang, ne?
51 TUT_17 Rompe la jaula acercándote a ella para liberar a los animales Break the cage by touching it and free the animals Breche den Käfig auf indem du ihn berührst und befreie die Tiere
52 TUT_18 Vuelve a la nave y pulsa la tecla arriba para ser abducido Get back to the ship and press up to be abducted Gehe zurück ins UFO indem du Hoch drückst und dich entführen lässt
53 TUT_19 En este juego NO respetamos las leyes de la física. Puedes saltar y en el aire modificar tu dirección. In this game we DON'T obey the laws of physics. You can jump and change your direction in the air. In diesem Spiel folgen wir den Gesetzen der Physik NICHT. Während du springst kannst du in der Luft die Richtung ändern
54 MAP3_TEXT0 A veces la maleza es tan densa que te impide ver. ¡Abre bien los ojos! Sometimes the bushes is so dense don't allow you to see beyond. Keep your eyes open! Manche Büsche sind so dicht, dass man nicht durch sie hindurchsehen kann. Halte die Augen offen!
55
56
57
58 CHICKEN_ADVICE_0 Vamos señores wuuu! C’mon! Yeehaw Auf geht’s! Vollgas! LITERAL_TRANSLATION
59 CHICKEN_ADVICE_1 Los astronautas no existen Nasa is a lie Die Mondlandung war nachgedreht MEME (flat eartch and nasa conspiracy)
60 CHICKEN_ADVICE_2 e=mc² e=mc² e=mc² KEEP
61 CHICKEN_ADVICE_3 e_e e_e e_e KEEP
62 CHICKEN_ADVICE_4 Wiii Wiii Wiii LITERAL_TRANSLATION (its like a sound, not the console)
63 CHICKEN_ADVICE_5 cocococo cluck cluck cluck cluck gack gack gack gack LITERAL_TRANSLATION (sound made by a hen)
64 CHICKEN_ADVICE_6 Zzz... Zzz… - LITERAL_TRANSLATION (sound for sleep)
65 CHICKEN_ADVICE_7 ¡Ya era hora! It was about time! Wurde aber auch Zeit! LITERAL_TRANSLATION
66 CHICKEN_ADVICE_8 :D :D :D KEEP
67 CHICKEN_ADVICE_9 #NotAllMen #NotAllMen #NotAllMen KEEP
68 CHICKEN_ADVICE_10 Aléjate primo aléjate Get out of this place Verpiss dich von meinem Körper! LITERAL_TRANSLATION
69 CHICKEN_ADVICE_11 Efectivamente Indeed Tatsächlich LITERAL_TRANSLATION
70 CHICKEN_ADVICE_12 Porque quiero que sepas que tú para mi eres un amigo pa siempre I want you to know that for me you are a true friend forever Du musst wissen, wirst SIMILAR_TRANSLATION (what a drunk person would say to his best friend)
71 CHICKEN_ADVICE_13 La gravedad no existe The earth is flat Die Erde ist eine Scheibe MEME (flat eartch and nasa conspiracy)
72 CHICKEN_ADVICE_14 La caida de la gran babilonia Tim's your uncle MEME (random)
73 CHICKEN_ADVICE_15 FUAAAA!! Zzz… MEME (random)
74 CHICKEN_ADVICE_16 Tú no me mandas I don’t receive orders from you Ich lass mir von dir nichts sagen LITERAL_TRANSLATION
75 CHICKEN_ADVICE_17 :C :C :C KEEP
76 CHICKEN_ADVICE_18 No te pongas nervioso Don’t get nervous Nicht nervös werden LITERAL_TRANSLATION
77 CHICKEN_ADVICE_19 ¿Dónde está la contaminacion que yo la vea? Will, will Will will Will Will’s will? MEME (random)
78 CHICKEN_ADVICE_20 seh seh seh seh yep yep yep LITERAL_TRANSLATION (say yes a lot of times)
79 CHICKEN_ADVICE_21 Tu crees que arcadio va a llevar el coche al para? MEME (random)
80 CHICKEN_ADVICE_22 La psicología es útil The psychology is useful Die Psychologie ist nützlich MEME (random)
81 CHICKEN_ADVICE_23 C++ > Java C++ > Java C++ > Java KEEP
82 CHICKEN_ADVICE_24 GNU‘s Not Unix GNU‘s Not Unix GNU‘s Not Unix KEEP
83 CHICKEN_ADVICE_25 Salchichas comodoro Are you talkin‘ to me? MEME (random)
84 CHICKEN_ADVICE_26 Ostia el workbook! And I say HEEEEEEEYYYY Whats going on? MEME (random)
85 CHICKEN_ADVICE_27 Macarrones con tomatico ring ring ring ring ring ring ring BANANA PHONE! Ich esse gerne Sauerkraut und tanze gerne Polka MEME (random)
86 CHICKEN_ADVICE_28 Yo soy tu padre I am your father Ich bin dein Vater LITERAL_TRANSLATION
87 CHICKEN_ADVICE_29 No quiero hablar contigo I don’t wanna talk to you Ich will nicht mit dir reden LITERAL_TRANSLATION
88 CHICKEN_ADVICE_30 Déjame en paz Let me alone Lass mich in Frieden LITERAL_TRANSLATION
89 CHICKEN_ADVICE_31 ... KEEP
90 CHICKEN_ADVICE_32 La oronja verde o amanita phalloides es el hongo más venenoso del mundo Amanita phalloides or death cap is the most poisonous fungi in the world Der Grüne Knollenblätterpilz oder Grüne Gift-Wulstling ist der giftigste Pilz der Welt LITERAL_TRANSLATION
91 CHICKEN_ADVICE_33 Poesía eres tú You are poetry SIMILAR_TRANSLATION (the original is a sentence from a spanish poem)
92 CHICKEN_ADVICE_34 Illuminati confirmed Illuminati confirmed KEEP
93 CHICKEN_ADVICE_35 Soy dueño de la canaca I have to go to Walmart MEME (random)
94 CHICKEN_ADVICE_36 Yo soy un pollo cobarde But will it blend? MEME (random)
95 CHICKEN_ADVICE_37 ¡Macrocéfalo, anfitrión, Rocambole, ectoplasma, filoxera, caníbal! Billions of blue blistering boiled and barbecued barnacles! SIMILAR_TRANSLATION (some random insults of Captain Haddock from tintin series )
96 CHICKEN_ADVICE_38 Para pasar a binario solo debes dividir entre 2, el resultado son los restos ordenados al revés To change a number to binary you only have to divide it by 2, the result are the remainings in inverse order LITERAL_TRANSLATION
97 CHICKEN_ADVICE_39 Si no estás conmigo eres mi enemigo If you are not with me then you are my enemy LITERAL_TRANSLATION
98 CHICKEN_ADVICE_40 Mírame a los ojos cuando te hablo Look at my eyes when i'm talking to you LITERAL_TRANSLATION
99 CHICKEN_ADVICE_41 ¡Duro con ellos! Go and get hard on them! LITERAL_TRANSLATION
100 CHICKEN_ADVICE_42 Rambo está en la trinchera, tiene una herida de bala en la pierna I can’t feel my legs! SIMILAR_TRANSLATION (a sentence from the rambo saga)
101 CHICKEN_ADVICE_43 Sosio aflójate un eurito ahí Hey man give me a buck plz SIMILAR_TRANSLATION (the thing a yonki would say asking you money)
102 CHICKEN_ADVICE_44 Mira no más, esta cara, este cuerpo. Tú jamás tendrás este cuerpo Oh dear look at my pretty face, isn't it fabulous? SIMILAR_TRANSLATION (the thing a very egotistical person would say about how beautifull face or body has)
103 CHICKEN_ADVICE_45 ¡Mi pueblo se muere por falta de conocimiento! Checkmate atheist! MEME (random)
104 CHICKEN_ADVICE_46 Y volé de él, y él voló allá por la arbolada I believe I can flyyy MEME (random)
105 CHICKEN_ADVICE_47 Yo soy un pirata y tu mente es el mar y la psicología es mi barco I’m a pirate and your mind is the sea and the psichology is my boat MEME (random)
106 CHICKEN_ADVICE_48 Si recomiendas a la gente usar homeopatía, te sugiero amablemente que te vayas a hacer puñetas If water has memory then homeopathy is full of shit SIMILAR_TRANSLATION (homeopathy is a serious scam and health problem)
107 CHICKEN_ADVICE_49 Si estás en un bosque y gritas y nadie te oye, ¿Por qué sigo suspendiendo Álgebra? If you are in a forest a shout and no one hears you, why I keep failing Algebra? LITERAL_TRANSLATION (the phylosophicall problem of forest and sound but with my own problems in it)
108 CHICKEN_ADVICE_50 Deja de xorfirar anda Stop xorfiring now MEME (random)
109 CHICKEN_ADVICE_51 Para mí será un placer vencerte For me it would be a pleasure to defeat you SIMILAR_TRANSLATION (the thing a classic bad guy from a comic would say to the hero)
110 CHICKEN_ADVICE_52 No me toques que yo no te he tocao Don’t touch me cause I didn't touched you! LITERAL_TRANSLATION
111 CHICKEN_ADVICE_53 A que no adivinas quién fue primero, ¿Mi huevo o yo? I bet you can answer this, which was first, my egg or me? LITERAL_TRANSLATION (another phylosophicall question but tweaked to be said by a hen)
112 CHICKEN_ADVICE_54 ¡Ay vida mía, soy taaan desdichada! I am soo unfortunate! LITERAL_TRANSLATION
113 CHICKEN_ADVICE_55 Ay quién tuviera la dicha que tiene el gallo What does the fox say? MEME (veguely related with hens if possible)
114 CHICKEN_ADVICE_56 ¡Tengo miedo, tengo miedo, tengo miego, tengo muchísimo miedo! I’m so so so afraid! LITERAL_TRANSLATION
115 CHICKEN_ADVICE_57 ¿Y qué hago mi niño, me lo cargo al hombro? Look at my horse my horse is amazing MEME (random)
116 CHICKEN_ADVICE_58 Eres un mago Harry You're a wizard harry Du bist ein Zauberer Harry LITERAL_TRANSLATION
117 CHICKEN_ADVICE_59 Me hago pipí :/ I have to wee :/ Ich muss Pipi machen :/ LITERAL_TRANSLATION
118 CHICKEN_ADVICE_60 Dime algo que no sepa ya Tell me something I didn’t know LITERAL_TRANSLATION
119 CHICKEN_ADVICE_61 No puedo ni confirmar ni desmentir que yo sea un pollo I can neither confirm nor deny I’m a chicken LITERAL_TRANSLATION (joke with the CIA first tweet)
120 CHICKEN_ADVICE_62 Pienso luego existo I think therefore I exist LITERAL_TRANSLATION (Cogito ergo sum)
121 CHICKEN_ADVICE_63 Pos coman pinocha Yolooo MEME (random)

BIN
Locales/locales.de.xl Normal file

Binary file not shown.

BIN
Locales/locales.en.xl Normal file

Binary file not shown.

BIN
Locales/locales.es.xl Normal file

Binary file not shown.

56
Makefile Normal file
View file

@ -0,0 +1,56 @@
prefix ?= usr/local
DESTDIR :=
ICONSIZES := 64 128
BIT := $(shell getconf LONG_BIT)
define \n
endef
build/cowsrevenge: $(wildcard "Scenes/*/*") $(wildcard "Locales/*") $(wildcard "Sound/*") $(wildcard "Music/*") $(wildcard "Sprites/*") $(wildcard "Sprites/*/*") $(wildcard "Fonts/*") $(wildcard "Fonts/*/*") export.cfg engine.cfg d.tscn build/godot/bin/godot_server.server.opt.tools.$(BIT)
# put into self contained mode
touch build/godot/bin/._sc_
cd build/godot; scons -j `nproc` platform=x11 target=release bits=$(BIT) use_llvm=yes tools=no
mkdir -p build/godot/bin/editor_data/templates/
cp build/godot/bin/godot.x11*.llvm build/godot/bin/editor_data/templates/linux_x11_$(BIT)_release
build/godot/bin/godot_server.server.opt.tools.$(BIT) -export "Linux X11" build/cowsrevenge
#build engine
build/godot/bin/godot_server.server.opt.tools.$(BIT):
mkdir -p build
cd build; git clone -b 2.1 --single-branch https://github.com/godotengine/godot || true
cd build/godot; scons -j `nproc` platform=server target=release_debug bits=$(BIT) use_llvm=yes unix_global_settings_path=".."
.PHONY: install
install: build/cowsrevenge $(wildcard "linux_build/*")
install -d "$(DESTDIR)/$(prefix)/bin/"
install -d "$(DESTDIR)/$(prefix)/share/applications/"
install -d "$(DESTDIR)/$(prefix)/share/metainfo/"
install build/cowsrevenge "$(DESTDIR)/$(prefix)/bin/"
install -m644 linux_build/com.github.dariasteam.cowsrevenge.desktop "$(DESTDIR)/$(prefix)/share/applications/"
install linux_build/com.github.dariasteam.cowsrevenge.appdata.xml "$(DESTDIR)/$(prefix)/share/metainfo/"
#install icon files
$(foreach size,$(ICONSIZES),install -d "$(DESTDIR)/$(prefix)/share/icons/hicolor/$(size)x$(size)/apps/";$(\n))
$(foreach size,$(ICONSIZES),install -m644 "linux_build/cowsrevenge_icon_$(size).png" "$(DESTDIR)/$(prefix)/share/icons/hicolor/$(size)x$(size)/apps/com.github.dariasteam.cowsrevenge.png";$(\n))
#update databases if installed to system
ifeq ($(DESTDIR),)
-xdg-icon-resource forceupdate --mode system;
-xdg-desktop-menu forceupdate --mode system;
endif
.PHONY: uninstall
uninstall: "$(DESTDIR)/$(prefix)/bin/cowsrevenge"
rm "$(DESTDIR)/$(prefix)/bin/cowsrevenge"
rm "$(DESTDIR)/$(prefix)/share/applications/linux_build/com.github.dariasteam.cowsrevenge.desktop"
rm "$(DESTDIR)/$(prefix)/share/metainfo/linux_build/com.github.dariasteam.cowsrevenge.appdata.xml"
#remove icon files
$(foreach size,$(ICONSIZES),rm "$(DESTDIR)/$(prefix)/share/icons/hicolor/$(size)x$(size)/apps/com.github.dariasteam.cowsrevenge.png";$(\n))
#update databases if removed from system
ifeq ($(DESTDIR),)
-xdg-icon-resource forceupdate --mode system;
-xdg-desktop-menu forceupdate --mode system;
endif
.PHONY: clean
clean:
rm -rf build

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
Misc/itch.io_badge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
Music/Milk machine.ogg Normal file

Binary file not shown.

Binary file not shown.

BIN
Music/milk-machine-loop.ogg Normal file

Binary file not shown.

View file

@ -1,22 +1,43 @@
# Cow's Revenge ![](Sprites/Charasets/Player/idle/player_idle1.png)
# Cow's Revenge
![]()[![Download](Misc/itch.io_badge.png)](https://pipoypipagames.itch.io/cows-revenge)
<a href='https://flathub.org/apps/details/com.github.dariasteam.cowsrevenge'><img width='120' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.png'/></a>
<a href="https://f-droid.org/app/org.pipoypipagames.cowsrevenge">
<img src="https://f-droid.org/badge/get-it-on.png"
alt="Get it on F-Droid" height="60">
</a>
Casual platform game project for learning purposes. Made with [godot engine](https://godotengine.org/).
> You are a cow abducted and genetically improved by aliens which now have the opportunity to rebel against livestock industry by freeing the encaged hens and killing butchers. You used to be a regular cow raised as a dairy cow, but you ain't that anymore. You have become better. You are... THE COWEST.
Casual platform game project for learning purposes. Made with [godot engine 2.1.5](https://godotengine.org/).
Code licensed as [GPL v3](LICENSE_CODE), assets as [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/).
## Authors
- **Daniel Darias Sánchez** [mastodon](https://mastodon.social/@darias), dariasteam94@gmail.com
Code, music, sprites
- **Yanara** [instagram](https://www.instagram.com/needafreefall/), needafreefall-@hotmail.com
Sprites
## Screenshots
![](Screenshots/0.png)
![](Screenshots/1.png)
![](Screenshots/2.png)
![](Screenshots/3.png)
## Authors
- **Daniel Darias Sánchez** [mastodon](https://mastodon.social/@darias), [email](dariasteam94@gmail.com)
code, music, sprites, animations
- **Yanara Aristiguieta** [instagram](https://www.instagram.com/yanaronna/), [twitter](twitter.com/yanaronna), [email](needafreefall-@hotmail.com)
sprites, character design, animations
## Additional information
All resources have been created using the following FLOSS:
- [krita](https://krita.org/en/)
- [audacity](http://www.audacityteam.org/)
- tuxguitar
- [tuxguitar](http://tuxguitar.com.ar/)
- [inkscape](https://inkscape.org/en/)
- [sfxr](http://www.drpetter.se/project_sfxr.html)
# Contributors and third party stuff
Shaders: [Enrique Lalves](https://github.com/henriquelalves/SimpleGodotCRTShader)
Font: [Press Start 2P by CodeMan38 (Open Font License)](https://fonts.google.com/specimen/Press+Start+2P?selection.family=Press+Start+2P)
- [Basxto](https://github.com/basxto)

View file

@ -0,0 +1,36 @@
[gd_resource type="CanvasItemMaterial" load_steps=2 format=1]
[sub_resource type="CanvasItemShader" id=1]
_code = {
"fragment": "uniform float lines_distance = 4.0;
uniform float pixel_size = 2.0;
uniform float size_screen = 600;
uniform float scanline_alpha = 0.9;
uniform float lines_velocity = 30.0;
float line_row = floor((SCREEN_UV.y * size_screen/pixel_size) + mod(TIME*lines_velocity, lines_distance));
float n = 1.0 - ceil((mod(line_row,lines_distance)/lines_distance));
vec4 c = vec4(texscreen(SCREEN_UV),1);
c = c - n*c*(1 - scanline_alpha);
c.a = 1;
COLOR = c;",
"fragment_ofs": 0,
"light": "",
"light_ofs": 0,
"vertex": "",
"vertex_ofs": 0
}
[resource]
shader/shader = SubResource( 1 )
shader/shading_mode = 0
shader_param/lines_distance = 4.0
shader_param/pixel_size = 2.0
shader_param/size_screen = 600.0
shader_param/scanline_alpha = 0.9
shader_param/lines_velocity = 30.0

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,41 @@
[gd_scene load_steps=3 format=1]
[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=1]
[sub_resource type="ColorRamp" id=6]
offsets = FloatArray( 0, 0.995074 )
colors = ColorArray( 0, 0, 0, 0.463843, 0, 0, 0, 0 )
[node name="BottomLevelParticles" type="Particles2D"]
visibility/opacity = 0.7
transform/pos = Vector2( 623.831, 732.836 )
config/amount = 100
config/lifetime = 2.0
config/process_mode = 1
config/half_extents = Vector2( 700, 0 )
config/texture = ExtResource( 1 )
params/direction = 180.0
params/spread = 10.0
params/linear_velocity = 150.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 0.0
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 5.0
params/final_size = 0.0
params/hue_variation = 10.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/direction = 10.0
randomness/spread = 10.0
randomness/linear_velocity = 0.1
color/color = Color( 0, 0, 0, 1 )
color/color_ramp = SubResource( 6 )

515
Scenes/Events/UFO.tscn Normal file
View file

@ -0,0 +1,515 @@
[gd_scene load_steps=16 format=1]
[ext_resource path="res://Sprites/Effects/UFO-ray_1.png" type="Texture" id=1]
[ext_resource path="res://Sprites/Effects/UFO-ray_2.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=3]
[ext_resource path="res://Sprites/Charasets/UFO.png" type="Texture" id=4]
[ext_resource path="res://Scenes/Events/player_spawner.tscn" type="PackedScene" id=5]
[ext_resource path="res://Sprites/Charasets/cow.png" type="Texture" id=6]
[ext_resource path="res://Sound/UFO_abduct.ogg" type="AudioStream" id=7]
[ext_resource path="res://Fonts/pixelated_regular.fnt" type="BitmapFont" id=8]
[sub_resource type="Animation" id=1]
resource/name = "floating"
length = 3.0
loop = true
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:transform/pos")
tracks/0/interp = 2
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 1.5, 3 ),
"transitions": FloatArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 0, 0 ), Vector2( 0, -7 ), Vector2( 0, 0 ) ]
}
[sub_resource type="ConvexPolygonShape2D" id=2]
custom_solver_bias = 0.0
points = Vector2Array( 0, 23.8991, -81, 17.8991, -119, 6.89908, -139, -6.10092, -140, -16.1009, -134, -26.1009, -110, -38.1009, -76, -47.1009, -57, -50.1009 )
[sub_resource type="ConvexPolygonShape2D" id=3]
custom_solver_bias = 0.0
points = Vector2Array( 66, 19.8991, 0, 23.8991, -57, -50.1009, -46, -67.1009, -23, -81.1009, 0, -83.1009, 22, -81.1009, 46, -66.1009, 57, -50.1009 )
[sub_resource type="ConvexPolygonShape2D" id=4]
custom_solver_bias = 0.0
points = Vector2Array( 134, -3.10092, 106, 12.8991, 66, 19.8991, 57, -50.1009, 83, -46.1009, 107, -39.1009, 123, -32.1009, 137, -19.1009, 139, -10.1009 )
[sub_resource type="Animation" id=5]
resource/name = "appear"
length = 1.0
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:visibility/opacity")
tracks/0/interp = 2
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.05, 0.15, 0.2, 0.3, 0.45, 0.5, 0.6, 0.95, 1 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.4, 0.1, 1.0, 0.1, 0.5, 0.8, 0.4, 1.0, 0.0 ]
}
[sub_resource type="Animation" id=6]
resource/name = "unvanish"
length = 1.0
loop = false
step = 0.05
tracks/0/type = "value"
tracks/0/path = NodePath(".:visibility/opacity")
tracks/0/interp = 2
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.05, 0.1, 0.15, 0.25, 0.4, 0.5, 0.6, 0.85 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ 1.0, 0.4, 0.8, 0.1, 0.5, 0.1, 1.0, 0.4, 0.0 ]
}
[sub_resource type="RectangleShape2D" id=7]
custom_solver_bias = 0.0
extents = Vector2( 4.3399, 110.989 )
[node name="UFO" type="Node2D"]
[node name="Ray" type="Node2D" parent="."]
editor/display_folded = true
visibility/behind_parent = true
transform/pos = Vector2( 0, 131 )
z/z = 2
[node name="ray_outter" type="Sprite" parent="Ray"]
visibility/opacity = 0.2
visibility/behind_parent = true
visibility/blend_mode = 1
texture = ExtResource( 1 )
[node name="ray_inner" type="Sprite" parent="Ray"]
visibility/opacity = 0.2
visibility/behind_parent = true
visibility/blend_mode = 1
texture = ExtResource( 2 )
[node name="Particles2D" type="Particles2D" parent="Ray"]
visibility/behind_parent = true
visibility/blend_mode = 1
transform/pos = Vector2( 38, 111 )
config/amount = 3
config/lifetime = 0.6
config/time_scale = 0.6
config/preprocess = 10.0
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 180.0
params/spread = 0.0
params/linear_velocity = 400.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 100.0
params/tangential_accel = 150.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 0.5
params/final_size = 0.0
params/hue_variation = 5.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/gravity_direction = 1.0
randomness/tangential_accel = 0.4
randomness/initial_size = 0.5
randomness/hue_variation = 0.15
color/color = Color( 0.333827, 0.355469, 0.209671, 1 )
[node name="Particles2D1" type="Particles2D" parent="Ray"]
visibility/behind_parent = true
visibility/blend_mode = 1
transform/pos = Vector2( -34, 111 )
config/amount = 3
config/lifetime = 0.6
config/time_scale = 0.6
config/preprocess = 10.0
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 180.0
params/spread = 0.0
params/linear_velocity = 400.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 100.0
params/tangential_accel = -128.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 0.5
params/final_size = 0.0
params/hue_variation = 5.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/gravity_direction = 1.0
randomness/tangential_accel = 0.4
randomness/initial_size = 0.5
randomness/hue_variation = 0.15
color/color = Color( 0.333827, 0.355469, 0.209671, 1 )
[node name="Particles2D2" type="Particles2D" parent="Ray"]
visibility/behind_parent = true
visibility/blend_mode = 1
transform/pos = Vector2( 2, 118 )
config/amount = 3
config/lifetime = 0.6
config/time_scale = 0.6
config/preprocess = 10.0
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 180.0
params/spread = 0.0
params/linear_velocity = 400.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 100.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 0.5
params/final_size = 0.0
params/hue_variation = 5.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/linear_velocity = 0.5
randomness/gravity_direction = 1.0
randomness/tangential_accel = 0.4
randomness/initial_size = 0.5
randomness/hue_variation = 0.15
color/color = Color( 0.333827, 0.355469, 0.209671, 1 )
[node name="Sprite_UFO" type="Sprite" parent="."]
editor/display_folded = true
transform/pos = Vector2( 0, -4.66871 )
z/z = 3
texture = ExtResource( 4 )
[node name="Smoke" type="Node2D" parent="Sprite_UFO"]
editor/display_folded = true
visibility/behind_parent = true
[node name="some_a" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( -94, -8.13146 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="smoke_b" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( -69, 10.046 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="smoke_c" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( -24, 21.6321 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="smoke_d" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( 26, 20.4355 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="smoke_e" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( 67, 13.6283 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="smoke_f" type="Particles2D" parent="Sprite_UFO/Smoke"]
visibility/opacity = 0.2
visibility/behind_parent = true
transform/pos = Vector2( 90, -12.5606 )
config/amount = 32
config/lifetime = 0.5
config/process_mode = 1
config/texture = ExtResource( 3 )
params/direction = 0.0
params/spread = 10.0
params/linear_velocity = 80.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 9.8
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/spread = 0.2
randomness/hue_variation = 0.1
color/color = Color( 0.414062, 1, 0.533081, 1 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite_UFO"]
playback/process_mode = 0
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/floating = SubResource( 1 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "floating"
[node name="StaticBody2D" type="StaticBody2D" parent="Sprite_UFO"]
editor/display_folded = true
visibility/visible = false
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = false
shapes/1/shape = SubResource( 3 )
shapes/1/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/1/trigger = false
shapes/2/shape = SubResource( 4 )
shapes/2/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/2/trigger = false
collision/layers = 1
collision/mask = 1
constant_linear_velocity = Vector2( 0, 0 )
constant_angular_velocity = 0.0
friction = 1.0
bounce = 0.0
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Sprite_UFO/StaticBody2D"]
build_mode = 0
polygon = Vector2Array( -57, -50.1009, -46, -67.1009, -23, -81.1009, 0, -83.1009, 22, -81.1009, 46, -66.1009, 57, -50.1009, 83, -46.1009, 107, -39.1009, 123, -32.1009, 137, -19.1009, 139, -10.1009, 134, -3.10092, 106, 12.8991, 66, 19.8991, 0, 23.8991, -81, 17.8991, -119, 6.89908, -139, -6.10092, -140, -16.1009, -134, -26.1009, -110, -38.1009, -76, -47.1009 )
shape_range = Vector2( 0, 2 )
trigger = false
[node name="player_spawner" parent="." groups=[
"player_spawner",
] instance=ExtResource( 5 )]
transform/pos = Vector2( -1.5159, 199.14 )
[node name="Sprite_cow" type="Sprite" parent="player_spawner"]
visibility/opacity = 0.0
visibility/behind_parent = true
transform/pos = Vector2( 1.00537, -0.359009 )
z/z = -2
texture = ExtResource( 6 )
region = true
region_rect = Rect2( 0, 0, 96, 96 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="player_spawner/Sprite_cow"]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/appear = SubResource( 5 )
anims/unvanish = SubResource( 6 )
playback/active = true
playback/speed = 5.0
blend_times = [ ]
autoplay = ""
[node name="Area2D" type="Area2D" parent="player_spawner"]
editor/display_folded = true
transform/pos = Vector2( 1.00537, -57.1355 )
input/pickable = true
shapes/0/shape = SubResource( 7 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, -0.263519, 0 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="player_spawner/Area2D"]
transform/pos = Vector2( -0.263519, 0 )
shape = SubResource( 7 )
trigger = false
_update_shape_index = 0
[node name="Instancer" type="Node2D" parent="player_spawner"]
transform/scale = Vector2( 0.5882, 0.5882 )
[node name="Sound" type="StreamPlayer" parent="player_spawner"]
stream/stream = ExtResource( 7 )
stream/play = true
stream/loop = false
stream/volume_db = 10.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[node name="UFO_texts" type="Label" parent="player_spawner"]
focus/ignore_mouse = true
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 0
margin/left = -202.0
margin/top = -154.0
margin/right = 204.0
margin/bottom = -96.0
custom_fonts/font = ExtResource( 8 )
align = 1
autowrap = true
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[connection signal="body_enter" from="player_spawner/Area2D" to="player_spawner" method="_on_Area2D_body_enter"]
[connection signal="body_exit" from="player_spawner/Area2D" to="player_spawner" method="_on_Area2D_body_exit"]

View file

@ -2,7 +2,18 @@ extends Area2D
export(int) var amount = 100
func _on_Area2D_body_enter( body ):
onready var sound = get_node("Sound")
onready var sprite = get_node("Sprite")
func _ready():
sound.connect("finished",self,"queue_free")
func _on_Apple_body_enter( body ):
if(body.is_in_group("player")):
body.add_milk(amount)
queue_free()
if global.sound:
sound.play()
sprite.set_opacity(0)

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=4 format=1]
[gd_scene load_steps=5 format=1]
[ext_resource path="res://Scenes/Events/apple.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Charasets/manzana.png" type="Texture" id=2]
[ext_resource path="res://Sound/apple_sound.ogg" type="AudioStream" id=3]
[sub_resource type="RectangleShape2D" id=1]
@ -15,15 +16,14 @@ shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 2.49193, 0, 0, 2.79981, -2.22558, 5.41232 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 0.0
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision/layers = 16
script/script = ExtResource( 1 )
amount = 100
[node name="Apple" type="Sprite" parent="."]
[node name="Sprite" type="Sprite" parent="."]
transform/scale = Vector2( 2, 2 )
texture = ExtResource( 2 )
@ -36,6 +36,17 @@ shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[connection signal="body_enter" from="." to="." method="_on_Area2D_body_enter"]
[node name="Sound" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 3 )
stream/play = false
stream/loop = false
stream/volume_db = 5.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[connection signal="body_enter" from="." to="." method="_on_Apple_body_enter"]

View file

@ -0,0 +1,43 @@
extends StaticBody2D
export(String) var base_key_texts = "CHICKEN_ADVICE_"
export(int) var keys_size = 56
var texts = []
onready var foreground = get_node("Foreground")
onready var background = get_node("Background")
onready var particles_a = get_node("Bars")
onready var particles_b = get_node("Dust")
onready var sound = get_node("StreamPlayer")
onready var text_label = get_node("Node2D/Text")
onready var text_anim = get_node("Node2D/Text/AnimationPlayer")
func _ready():
for i in range(0, keys_size):
texts.push_back(str(base_key_texts, i))
func open_cage():
get_tree().get_nodes_in_group("player_spawner")[0].update_text()
if global.sound:
sound.play()
text_label.set_text( texts[rand_range(0, texts.size())])
text_anim.play("Apear")
get_node("Area2D").queue_free()
get_node("CollisionShape2D").queue_free()
particles_a.set_emitting(true)
particles_b.set_emitting(true)
foreground.queue_free()
background.queue_free()
remove_from_group("cages")
func _on_Area2D_body_enter( body ):
if (body.is_in_group("player")):
body.open_cage(1)
open_cage()

146
Scenes/Events/chain.tscn Normal file
View file

@ -0,0 +1,146 @@
[gd_scene load_steps=3 format=1]
[sub_resource type="GDScript" id=1]
script/source = "export (NodePath) var START
export (NodePath) var END
export(int) var divisor = 4
onready var start = get_node(START)
onready var end = get_node(END)
onready var x1 = start.get_pos().x
onready var x2 = end.get_pos().x
onready var y1 = start.get_pos().y
onready var y2 = end.get_pos().y
onready var A = abs(x2 - x1)
onready var B = abs(y2 - y1)
onready var H = sqrt(pow(A, 2) + pow(B, 2))
onready var angle = asin(A / H / sin(deg2rad(90)))
onready var x_sign = ((start.get_pos().x - end.get_pos().x < 0) * -2) +1
const segment = preload(\"res://Scenes/Events/chain_segment.tscn\")
func next_segment_y(x):
return Vector2(x , ((x - x1) * (y2 - y1) / (x2 - x1)) + y1)
func generate_segment (index):
var aux_segment = segment.instance()
var position_x = start.get_pos().x - (x_sign * (divisor * index)) * angle
aux_segment.set_pos(next_segment_y(position_x))
return aux_segment
func _ready():
print (angle)
var distance = start.get_pos().distance_to(end.get_pos())
var n_segments = distance / divisor
var last_segment = start
for i in range(1, n_segments - 1):
var aux_segment = generate_segment(i)
add_child(aux_segment)
last_segment.get_node(\"joint\").set_node_a(last_segment.get_path())
last_segment.get_node(\"joint\").set_node_b(aux_segment.get_path())
last_segment = aux_segment
last_segment.get_node(\"joint\").set_node_a(last_segment.get_path())
last_segment.get_node(\"joint\").set_node_b(end.get_path())
"
[sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0
extents = Vector2( 4.05118, 3.93616 )
[node name="Node2D" type="Node2D"]
transform/pos = Vector2( 589.086, 309.696 )
script/script = SubResource( 1 )
START = NodePath("Start")
END = NodePath("End")
divisor = 1
[node name="Start" type="RigidBody2D" parent="."]
transform/pos = Vector2( 225.344, 1.77942 )
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 10.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Start"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="Start"]
transform/pos = Vector2( -6.01813, -0.0238342 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D18")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 0.0
[node name="End" type="RigidBody2D" parent="."]
transform/pos = Vector2( 125.865, 0.659424 )
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 10.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="CollisionShape2D" type="CollisionShape2D" parent="End"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="End"]
transform/pos = Vector2( -6.01813, -0.0238342 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D18")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 0.0

View file

@ -0,0 +1,55 @@
[gd_scene load_steps=3 format=1]
[ext_resource path="res://Sprites/Boss/wire.png" type="Texture" id=1]
[sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0
extents = Vector2( 4.05118, 3.93616 )
[node name="chain_segment" type="RigidBody2D"]
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 0
mass = 0.102041
friction = 1.0
bounce = 1.0
gravity_scale = 2.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="."]
transform/pos = Vector2( -6.01068, -0.00541687 )
texture = ExtResource( 1 )
offset = Vector2( 6.01068, 0.00541687 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="."]
transform/pos = Vector2( -6.01813, -0.0238342 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D18")
bias/bias = 1.0
collision/exclude_nodes = true
softness = 8.0

12
Scenes/Events/cowbell.gd Normal file
View file

@ -0,0 +1,12 @@
extends Area2D
export(int) var amount = 100
func _ready():
pass
func _on_Area2D_body_enter( body ):
if(body.is_in_group("player")):
body.add_cowbells(1)
queue_free()

View file

@ -0,0 +1,57 @@
[gd_scene load_steps=5 format=1]
[ext_resource path="res://Scenes/Events/cowbell.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Charasets/cowbell.png" type="Texture" id=2]
[ext_resource path="res://Scenes/Events/cowbell_animation_one_shot.tres" type="Animation" id=3]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 13, 13 )
[node name="Cowbell" type="Area2D"]
z/relative = false
input/pickable = false
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 1.875, 0, 0, 1.875, 7.15256e-07, -9.53674e-07 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 0.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision/layers = 16
script/script = ExtResource( 1 )
amount = 100
[node name="Sprite" type="Sprite" parent="."]
transform/scale = Vector2( 2, 2 )
texture = ExtResource( 2 )
hframes = 3
frame = 2
region_rect = Rect2( 0, 0, 24, 24 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"]
playback/process_mode = 0
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/Bling = ExtResource( 3 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "Bling"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
transform/pos = Vector2( 7.15256e-07, -9.53674e-07 )
transform/scale = Vector2( 1.875, 1.875 )
shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[connection signal="body_enter" from="." to="." method="_on_Area2D_body_enter"]

View file

@ -0,0 +1,19 @@
[gd_resource type="Animation" format=1]
[resource]
resource/name = "Bling"
length = 0.61
loop = true
step = 0.15
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.15, 0.3, 0.45, 0.6 ),
"transitions": FloatArray( 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 0, 2, 0 ]
}

View file

@ -0,0 +1,19 @@
[gd_resource type="Animation" format=1]
[resource]
resource/name = "Bling"
length = 0.61
loop = true
step = 0.15
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.15, 0.3, 0.45, 0.6 ),
"transitions": FloatArray( 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 0, 2, 0 ]
}

View file

@ -0,0 +1,69 @@
[gd_scene load_steps=4 format=1]
[ext_resource path="res://Fonts/pixelated_title.fnt" type="BitmapFont" id=1]
[sub_resource type="GDScript" id=1]
script/source = "extends RichTextLabel
func _on_AnimationPlayer_finished():
queue_free()
"
[sub_resource type="Animation" id=2]
length = 1.0
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:rect/pos")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.4, 0.6, 0.7, 0.8, 0.9, 0.9, 1 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 0, 94 ), Vector2( 0, 50 ), Vector2( 0, 37 ), Vector2( 0, 32.6667 ), Vector2( 0, 28.3333 ), Vector2( 630, 24 ), Vector2( 0, 24 ), Vector2( 0, 22 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:visibility/opacity")
tracks/1/interp = 1
tracks/1/imported = false
tracks/1/keys = {
"times": FloatArray( 0, 1 ),
"transitions": FloatArray( 1, 1 ),
"update": 0,
"values": [ 1.0, 0.0 ]
}
[node name="Bonus" type="RichTextLabel"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 0.0
margin/top = 94.0
margin/right = 202.0
margin/bottom = 228.0
custom_fonts/normal_font = ExtResource( 1 )
bbcode/enabled = true
bbcode/bbcode = ""
visible_characters = -1
percent_visible = 1.0
script/script = SubResource( 1 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/bonus_up = SubResource( 2 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "bonus_up"
[connection signal="finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_finished"]

View file

@ -0,0 +1,10 @@
extends Node2D
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass

View file

@ -0,0 +1,57 @@
extends Node2D
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
onready var timer = get_node("next_cowbell_time")
const SAMPLE_LIBRARY = preload("res://Scenes/Events/cowbell_sample_library.tres")
export(float) var pitch_increment = 0.05
export(float) var base_pitch = 1.5
export(int) var bonus_threshold = 20
export(int) var bonus_cowbells = 15
var pitch = base_pitch
var acumulator = 0;
var multiplier = 1
func timer_timeout():
pitch = base_pitch
acumulator = 0
multiplier = 1
func play_sound():
pitch += pitch_increment
acumulator += pitch_increment
if (acumulator >= (pitch_increment * bonus_threshold)):
get_tree().get_nodes_in_group("player")[0].add_bonus(bonus_cowbells * multiplier)
acumulator = 0
multiplier += 1
var sample_player = SamplePlayer.new()
sample_player.set_sample_library(SAMPLE_LIBRARY)
sample_player.set_default_pitch_scale(pitch)
sample_player.set_default_volume(40)
var aux_timer = Timer.new()
aux_timer.set_one_shot(true)
aux_timer.set_wait_time(0.5)
aux_timer.connect("timeout",sample_player,"queue_free")
add_child(sample_player)
sample_player.add_child(aux_timer)
if global.sound:
sample_player.play("cowbell_sound")
aux_timer.start()
timer.start()
return pitch - base_pitch
func _ready():
timer.connect("timeout",self,"timer_timeout")

View file

@ -0,0 +1,13 @@
[gd_resource type="SampleLibrary" load_steps=2 format=1]
[ext_resource path="res://Sound/cowbell_sound.wav" type="Sample" id=1]
[resource]
samples/cowbell_sound = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 1 )
}

View file

@ -1,8 +1,17 @@
extends Area2D
onready var particles = get_tree().get_nodes_in_group("bottom_level_particles")[0]
func _on_DeathLine_body_enter( body ):
if(body.is_in_group("player")):
body.on_receive_damage(1000)
queue_free()
elif(body.is_in_group("enemy")):
body.queue_free()
body.queue_free()
func _on_death_line_area_enter( area ):
if(area.is_in_group("bottom_level_detector") and global.bottom_particles):
particles.set_emitting(true)
func _on_death_line_area_exit( area ):
if(area.is_in_group("bottom_level_detector") and global.bottom_particles):
particles.set_emitting(false)

View file

@ -33,6 +33,10 @@ shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[connection signal="area_enter" from="." to="." method="_on_death_line_area_enter"]
[connection signal="area_exit" from="." to="." method="_on_death_line_area_exit"]
[connection signal="body_enter" from="." to="." method="_on_DeathLine_body_enter"]

View file

@ -6,10 +6,10 @@ var vertical
export var velocity = 350
var v = Vector2(-velocity, 0)
onready var sprite = get_node("Sprite")
onready var sprite = get_node("sprite")
onready var area_head = get_node("area_head")
onready var hit_single = get_node("hit_ray_particle")
onready var sound = get_node("sound")
export(bool) var dir_left = true;
@ -20,22 +20,23 @@ export(int) var damage = 1
func reverse_direction():
sprite.set_flip_h(v.x < 0)
dir_left = !dir_left
v = Vector2(-v.x,0)
v = Vector2(-v.x,0)
func _ready():
func _ready():
if (!dir_left):
reverse_direction()
set_fixed_process(true)
#set_process(true)
#set_fixed_process(true)
set_process(true)
func dissapear():
func disappear():
play_damage_sound()
sprite.set_opacity(0)
set_fixed_process(false)
set_layer_mask_bit(2,false)
hit_single.set_emitting(true)
var t = Timer.new()
t.set_wait_time(hit_single.get_lifetime())
t.set_wait_time(max(hit_single.get_lifetime(), 1))
t.set_one_shot(true)
self.add_child(t)
t.start()
@ -44,10 +45,10 @@ func dissapear():
func die_by_jump():
life = 0
dissapear()
disappear()
func die():
dissapear()
disappear()
func on_opacity_low ():
sprite.set_modulate(Color("fb12e7"))
@ -55,7 +56,14 @@ func on_opacity_low ():
func on_opacity_high ():
sprite.set_modulate(Color("00ffff"))
func play_damage_sound():
var sample_list = sound.get_sample_library().get_sample_list()
var sample = sample_list[rand_range(0, sample_list.size())]
if global.sound:
sound.play(sample, 0)
func decrease_life (value):
play_damage_sound()
hit_single.set_emitting(false)
hit_single.set_emitting(true)
var t1 = Timer.new()
@ -71,13 +79,13 @@ func decrease_life (value):
t1.start()
yield(t1, "timeout")
t2.start()
yield(t2, "timeout")
yield(t2, "timeout")
sprite.set_modulate(Color("ffffff"))
if (life > 0):
life -= value
if (life <= 0):
die()
func restore_velocity():
if(dir_left):
v.x = -velocity
@ -89,16 +97,16 @@ func change_velocity(amount, right):
v.x = ((!dir_left * -1) + (dir_left * 1)) * amount
else:
v.x += ((dir_left * -1) + (!dir_left * 1)) * amount
func _fixed_process(delta):
func _process(delta):
var motion = v * delta
motion = move(motion)
v.y += delta * GRAVITY
if (is_colliding()):
var normal = get_collision_normal();
if (normal.y < 0):
if (normal.y > -1):
v.y = -velocity
@ -118,4 +126,4 @@ func _on_area_head_body_enter( body ):
if (body.is_in_group("player")):
if (body.foots.get_global_pos().y > area_head.get_global_pos().y and body.is_falling()):
life = 0
die_by_jump()
die_by_jump()

View file

@ -1,19 +1,9 @@
[gd_scene load_steps=22 format=1]
[gd_scene load_steps=14 format=1]
[ext_resource path="res://Scenes/Events/enemy_1.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk1.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk10.png" type="Texture" id=3]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk2.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk3.png" type="Texture" id=5]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk4.png" type="Texture" id=6]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk5.png" type="Texture" id=7]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk6.png" type="Texture" id=8]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk7.png" type="Texture" id=9]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk8.png" type="Texture" id=10]
[ext_resource path="res://Sprites/Charasets/Enemy_1/enemy_walk9.png" type="Texture" id=11]
[ext_resource path="res://Sprites/Effects/sangre.png" type="Texture" id=12]
[ext_resource path="res://Sprites/Charasets/enemy_1.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Effects/sangre.png" type="Texture" id=3]
[ext_resource path="res://Scenes/Events/enemy_die_sample_player.tres" type="SampleLibrary" id=4]
[sub_resource type="ConvexPolygonShape2D" id=1]
@ -33,7 +23,7 @@ points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231
[sub_resource type="RectangleShape2D" id=4]
custom_solver_bias = 0.0
extents = Vector2( 13.0125, 38.3532 )
extents = Vector2( 7.54856, 38.3532 )
[sub_resource type="ConvexPolygonShape2D" id=5]
@ -50,14 +40,22 @@ points = Vector2Array( 2.63889, -0.899147, 8.90625, -8.09232, 26.7188, 8.39203,
custom_solver_bias = 0.0
points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231, -7.91667, 2.09801, -8.24653, -3.59659 )
[sub_resource type="SpriteFrames" id=8]
[sub_resource type="Animation" id=8]
animations = [ {
"frames": [ ExtResource( 2 ), ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ) ],
"loop": true,
"name": "walking",
"speed": 24.0
} ]
resource/name = "walk"
length = 0.4
loop = true
step = 0.04
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
}
[sub_resource type="ColorRamp" id=9]
@ -65,8 +63,8 @@ offsets = FloatArray( 0, 1 )
colors = ColorArray( 0.773438, 0.773438, 0.773438, 1, 0.1875, 0.1875, 0.1875, 1 )
[node name="KinematicBody2D 2" type="KinematicBody2D" groups=[
"enemy_1",
"enemy",
"enemy_1",
]]
transform/pos = Vector2( 64.3, -80 )
@ -154,13 +152,24 @@ polygon = Vector2Array( 8.57639, -19.4815, 8.90625, -8.09232, 2.63889, -0.899147
shape_range = Vector2( 0, 2 )
trigger = true
[node name="Sprite" type="AnimatedSprite" parent="."]
[node name="sprite" type="Sprite" parent="."]
transform/pos = Vector2( 3.8147e-06, 0 )
frames = SubResource( 8 )
animation = "walking"
frame = 8
playing = true
transform/pos = Vector2( 7.90835, 7.78536 )
texture = ExtResource( 2 )
vframes = 6
hframes = 6
frame = 4
[node name="animation" type="AnimationPlayer" parent="sprite"]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/walk = SubResource( 8 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "walk"
[node name="hit_ray_particle" type="Particles2D" parent="."]
@ -173,8 +182,8 @@ config/emitting = false
config/process_mode = 1
config/half_extents = Vector2( 40, 40 )
config/local_space = false
config/explosiveness = 0.5
config/texture = ExtResource( 12 )
config/explosiveness = 0.2
config/texture = ExtResource( 3 )
params/direction = 88.89
params/spread = 180.0
params/linear_velocity = 200.0
@ -196,6 +205,17 @@ randomness/spread = 0.8
randomness/linear_velocity = 0.45
color/color_ramp = SubResource( 9 )
[node name="sound" type="SamplePlayer2D" parent="."]
params/volume_db = 5.0
params/pitch_scale = 1.0
params/attenuation/min_distance = 1.0
params/attenuation/max_distance = 2048.0
params/attenuation/distance_exp = 2.92817
config/polyphony = 3
config/samples = ExtResource( 4 )
config/pitch_random = 0.135
[connection signal="body_enter" from="area_head" to="." method="_on_area_head_body_enter"]
[connection signal="body_enter" from="area_body" to="." method="_on_area_body_body_enter"]

141
Scenes/Events/enemy_2.gd Normal file
View file

@ -0,0 +1,141 @@
extends KinematicBody2D
const GRAVITY = 3000.0
var vertical
export var velocity = 350
var v = Vector2(-velocity, 0)
const MACHETE = preload("res://Scenes/Events/machete.tscn")
onready var sprite = get_node("sprite")
onready var area_head = get_node("area_head")
onready var hit_single = get_node("hit_ray_particle")
onready var sound = get_node("sound")
onready var shooter = get_node("shooter")
onready var shooter_pos = get_node("shooter").get_pos()
export(bool) var dir_left = true;
export(int) var life = 2
export(int) var damage = 1
func reverse_direction():
sprite.set_flip_h(v.x < 0)
dir_left = !dir_left
v = Vector2(-v.x,0)
shooter.set_pos(Vector2(-shooter_pos.x, shooter_pos.y))
func _ready():
if (!dir_left):
reverse_direction()
#set_fixed_process(true)
set_process(true)
func disappear():
get_node("shooter/Timer").disconnect("timeout", self, "_on_Timer_timeout")
play_damage_sound()
sprite.set_opacity(0)
set_fixed_process(false)
set_layer_mask_bit(2,false)
hit_single.set_emitting(true)
var t = Timer.new()
t.set_wait_time(max(hit_single.get_lifetime(), 1))
t.set_one_shot(true)
self.add_child(t)
t.start()
yield(t, "timeout")
queue_free()
func die_by_jump():
life = 0
disappear()
func die():
disappear()
func on_opacity_low ():
sprite.set_modulate(Color("fb12e7"))
func on_opacity_high ():
sprite.set_modulate(Color("00ffff"))
func play_damage_sound():
var sample_list = sound.get_sample_library().get_sample_list()
var sample = sample_list[rand_range(0, sample_list.size())]
if global.sound:
sound.play(sample, 0)
func decrease_life (value):
play_damage_sound()
hit_single.set_emitting(false)
hit_single.set_emitting(true)
var t1 = Timer.new()
var t2 = Timer.new()
t1.set_wait_time(0.07)
t2.set_wait_time(0.07)
t1.set_one_shot(true)
t2.set_one_shot(true)
t1.connect("timeout",self,"on_opacity_low")
t2.connect("timeout",self,"on_opacity_high")
add_child(t1)
add_child(t2)
t1.start()
yield(t1, "timeout")
t2.start()
yield(t2, "timeout")
sprite.set_modulate(Color("ffffff"))
if (life > 0):
life -= value
if (life <= 0):
die()
func restore_velocity():
if(dir_left):
v.x = -velocity
else:
v.x = velocity
func change_velocity(amount, right):
if (right == dir_left):
v.x = ((!dir_left * -1) + (dir_left * 1)) * amount
else:
v.x += ((dir_left * -1) + (!dir_left * 1)) * amount
func _process(delta):
var motion = v * delta
motion = move(motion)
v.y += delta * GRAVITY
if (is_colliding()):
var normal = get_collision_normal();
if (normal.y < 0):
if (normal.y > -1):
v.y = -velocity
var aux = v.x
motion = normal.slide(motion)
v = normal.slide(v)
move(motion)
v.x = aux
if (normal.x < -0.9 or normal.x > 0.9):
reverse_direction()
func _on_area_body_body_enter( body ):
if (body.is_in_group("player") and life > 0):
body.on_receive_damage(damage)
func _on_area_head_body_enter( body ):
if (body.is_in_group("player")):
if (body.foots.get_global_pos().y > area_head.get_global_pos().y and body.is_falling()):
life = 0
die_by_jump()
func _on_Timer_timeout():
var machete = MACHETE.instance()
machete.set_global_pos(shooter.get_global_pos())
machete.set_right(!dir_left)
get_parent().add_child(machete)

237
Scenes/Events/enemy_2.tscn Normal file
View file

@ -0,0 +1,237 @@
[gd_scene load_steps=14 format=1]
[ext_resource path="res://Scenes/Events/enemy_2.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Charasets/enemy_2.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Effects/sangre.png" type="Texture" id=3]
[ext_resource path="res://Scenes/Events/enemy_die_sample_player.tres" type="SampleLibrary" id=4]
[sub_resource type="ConvexPolygonShape2D" id=1]
custom_solver_bias = 0.0
points = Vector2Array( 8.90625, -8.09232, 8.57639, -19.4815, 23.6279, -19.5115, 26.7188, 8.39203 )
[sub_resource type="ConvexPolygonShape2D" id=2]
custom_solver_bias = 0.0
points = Vector2Array( 2.63889, -0.899147, 8.90625, -8.09232, 26.7188, 8.39203, 20.1215, 15.8849, 5.27778, 15.5852, 0.989584, 8.09231 )
[sub_resource type="ConvexPolygonShape2D" id=3]
custom_solver_bias = 0.0
points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231, -7.91667, 2.09801, -8.24653, -3.59659 )
[sub_resource type="RectangleShape2D" id=4]
custom_solver_bias = 0.0
extents = Vector2( 7.54856, 38.3532 )
[sub_resource type="ConvexPolygonShape2D" id=5]
custom_solver_bias = 0.0
points = Vector2Array( 8.90625, -8.09232, 8.57639, -19.4815, 23.744, -19.0929, 26.7188, 8.39203 )
[sub_resource type="ConvexPolygonShape2D" id=6]
custom_solver_bias = 0.0
points = Vector2Array( 2.63889, -0.899147, 8.90625, -8.09232, 26.7188, 8.39203, 20.1215, 15.8849, 5.27778, 15.5852, 0.989584, 8.09231 )
[sub_resource type="ConvexPolygonShape2D" id=7]
custom_solver_bias = 0.0
points = Vector2Array( -3.29861, -5.99431, 2.63889, -0.899147, 0.989584, 8.09231, -7.91667, 2.09801, -8.24653, -3.59659 )
[sub_resource type="Animation" id=8]
resource/name = "walk"
length = 0.4
loop = true
step = 0.04
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28, 0.32, 0.36 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
}
[sub_resource type="ColorRamp" id=9]
offsets = FloatArray( 0, 1 )
colors = ColorArray( 0.773438, 0.773438, 0.773438, 1, 0.1875, 0.1875, 0.1875, 1 )
[node name="KinematicBody2D 2" type="KinematicBody2D" groups=[
"enemy",
"enemy_1",
]]
transform/pos = Vector2( 64.3, -80 )
transform/scale = Vector2( 2, 2 )
input/pickable = false
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 )
shapes/0/trigger = false
shapes/1/shape = SubResource( 2 )
shapes/1/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 )
shapes/1/trigger = false
shapes/2/shape = SubResource( 3 )
shapes/2/transform = Matrix32( 1.68421, 0, 0, 1.85361, -19.4444, 6.66667 )
shapes/2/trigger = false
collision/layers = 5
collision/mask = 4
collision/margin = 0.08
script/script = ExtResource( 1 )
velocity = 350
dir_left = true
life = 2
damage = 1
[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="."]
transform/pos = Vector2( -19.4444, 6.66667 )
transform/scale = Vector2( 1.68421, 1.85361 )
build_mode = 0
polygon = Vector2Array( 8.57639, -19.4815, 8.90625, -8.09232, 2.63889, -0.899147, -3.29861, -5.99431, -8.24653, -3.59659, -7.91667, 2.09801, 0.989584, 8.09231, 5.27778, 15.5852, 20.1215, 15.8849, 26.7188, 8.39203, 23.6279, -19.5115 )
shape_range = Vector2( 0, 2 )
trigger = false
[node name="area_head" type="Area2D" parent="."]
transform/pos = Vector2( 7.35, -34.75 )
transform/scale = Vector2( 0.5, 0.148438 )
input/pickable = false
shapes/0/shape = SubResource( 4 )
shapes/0/transform = Matrix32( 2.41445, 0, 0, 0.77017, 0.581818, 2.46155 )
shapes/0/trigger = true
gravity_vec = Vector2( 0, 1 )
gravity = 0.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision/layers = 4
collision/mask = 34
[node name="CollisionShape2D1" type="CollisionShape2D" parent="area_head"]
transform/pos = Vector2( 0.581818, 2.46155 )
transform/scale = Vector2( 2.41445, 0.77017 )
shape = SubResource( 4 )
trigger = true
_update_shape_index = 0
[node name="area_body" type="Area2D" parent="."]
transform/pos = Vector2( -4.07679, 1.11111 )
transform/scale = Vector2( 0.9363, 1.08512 )
input/pickable = false
shapes/0/shape = SubResource( 5 )
shapes/0/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 )
shapes/0/trigger = true
shapes/1/shape = SubResource( 6 )
shapes/1/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 )
shapes/1/trigger = true
shapes/2/shape = SubResource( 7 )
shapes/2/transform = Matrix32( 1.79879, 0, 0, 1.7082, -16.6219, 4.86533 )
shapes/2/trigger = true
gravity_vec = Vector2( 0, 1 )
gravity = 0.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision/layers = 0
collision/mask = 34
[node name="CollisionPolygon2D3" type="CollisionPolygon2D" parent="area_body"]
transform/pos = Vector2( -16.6219, 4.86533 )
transform/scale = Vector2( 1.79879, 1.7082 )
build_mode = 0
polygon = Vector2Array( 8.57639, -19.4815, 8.90625, -8.09232, 2.63889, -0.899147, -3.29861, -5.99431, -8.24653, -3.59659, -7.91667, 2.09801, 0.989584, 8.09231, 5.27778, 15.5852, 20.1215, 15.8849, 26.7188, 8.39203, 23.744, -19.0929 )
shape_range = Vector2( 0, 2 )
trigger = true
[node name="sprite" type="Sprite" parent="."]
editor/display_folded = true
transform/pos = Vector2( 7.90835, 7.78536 )
texture = ExtResource( 2 )
vframes = 6
hframes = 6
frame = 4
[node name="animation" type="AnimationPlayer" parent="sprite"]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/walk = SubResource( 8 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "walk"
[node name="hit_ray_particle" type="Particles2D" parent="."]
transform/pos = Vector2( 7.65098, 1.11111 )
transform/scale = Vector2( 0.296685, 0.329861 )
config/amount = 100
config/lifetime = 1.0
config/emit_timeout = 0.2
config/emitting = false
config/process_mode = 1
config/half_extents = Vector2( 40, 40 )
config/local_space = false
config/explosiveness = 0.2
config/texture = ExtResource( 3 )
params/direction = 88.89
params/spread = 180.0
params/linear_velocity = 200.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 400.0
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 2.0
params/final_size = 0.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/direction = 0.29
randomness/spread = 0.8
randomness/linear_velocity = 0.45
color/color_ramp = SubResource( 9 )
[node name="sound" type="SamplePlayer2D" parent="."]
params/volume_db = 5.0
params/pitch_scale = 1.0
params/attenuation/min_distance = 1.0
params/attenuation/max_distance = 2048.0
params/attenuation/distance_exp = 2.92817
config/polyphony = 3
config/samples = ExtResource( 4 )
config/pitch_random = 0.135
[node name="shooter" type="Position2D" parent="."]
transform/pos = Vector2( -15, 5.53392 )
[node name="Timer" type="Timer" parent="shooter"]
process_mode = 0
wait_time = 1.5
one_shot = false
autostart = true
[connection signal="body_enter" from="area_head" to="." method="_on_area_head_body_enter"]
[connection signal="body_enter" from="area_body" to="." method="_on_area_body_body_enter"]
[connection signal="timeout" from="shooter/Timer" to="." method="_on_Timer_timeout"]

17
Scenes/Events/enemy_3.gd Normal file
View file

@ -0,0 +1,17 @@
extends Node2D
onready var hand_1 = get_node("Hand_Back/End")
onready var hand_2 = get_node("Hand_Front/End")
func _ready():
set_process(true)
func _process(delta):
var player = get_tree().get_nodes_in_group("player")[0]
if (player.get_global_pos().distance_to(get_global_pos()) < 100):
hand_1.set_global_pos(player.get_global_pos())
if (player.get_global_pos().distance_to(get_global_pos()) < 100):
hand_2.set_global_pos(player.get_global_pos())

View file

@ -0,0 +1,62 @@
[gd_resource type="SampleLibrary" load_steps=9 format=1]
[ext_resource path="res://Sound/enemy_die_sound_1.wav" type="Sample" id=1]
[ext_resource path="res://Sound/enemy_die_sound_2.wav" type="Sample" id=2]
[ext_resource path="res://Sound/enemy_die_sound_3.wav" type="Sample" id=3]
[ext_resource path="res://Sound/enemy_die_sound_4.wav" type="Sample" id=4]
[ext_resource path="res://Sound/enemy_die_sound_5.wav" type="Sample" id=5]
[ext_resource path="res://Sound/enemy_die_sound_6.wav" type="Sample" id=6]
[ext_resource path="res://Sound/enemy_die_sound_8.wav" type="Sample" id=7]
[ext_resource path="res://Sound/enemy_die_sound_9.wav" type="Sample" id=8]
[resource]
samples/enemy_die_sound_1 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 1 )
}
samples/enemy_die_sound_2 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 2 )
}
samples/enemy_die_sound_3 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 3 )
}
samples/enemy_die_sound_4 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 4 )
}
samples/enemy_die_sound_5 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 5 )
}
samples/enemy_die_sound_6 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 6 )
}
samples/enemy_die_sound_8 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 7 )
}
samples/enemy_die_sound_9 = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 8 )
}

View file

@ -0,0 +1,143 @@
[gd_scene load_steps=5 format=1]
[ext_resource path="res://Sprites/Tilesets/tile full.png" type="Texture" id=1]
[sub_resource type="Curve2D" id=1]
bake_interval = 5.0
_data = {
"points": Vector2Array( 0, 0, 1.67447, -1.07495, 1488.21, -138.305, 0, 0, 0, 0, -322.454, -132.864 )
}
[sub_resource type="Animation" id=2]
resource/name = "Nueva animación"
length = 2.0
loop = true
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:offset")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( ),
"transitions": FloatArray( ),
"update": 0,
"values": [ ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:unit_offset")
tracks/1/interp = 1
tracks/1/imported = false
tracks/1/keys = {
"times": FloatArray( 0, 1, 2 ),
"transitions": FloatArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 0.99, 0.0 ]
}
[sub_resource type="RectangleShape2D" id=3]
custom_solver_bias = 0.0
extents = Vector2( 78.6534, 9.26797 )
[node name="moving_platform" type="Node2D"]
transform/pos = Vector2( 640, 320 )
[node name="Path2D" type="Path2D" parent="."]
transform/pos = Vector2( 20, 9 )
curve = SubResource( 1 )
[node name="PathFollow2D" type="PathFollow2D" parent="Path2D"]
transform/pos = Vector2( 864.909, -136.896 )
transform/rot = -179.531
offset = 620.742
h_offset = 0.0
v_offset = 0.0
rotate = false
cubic_interp = true
loop = true
lookahead = 4.0
[node name="AnimationPlayer" type="AnimationPlayer" parent="Path2D/PathFollow2D"]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
"anims/Nueva animación" = SubResource( 2 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "Nueva animación"
[node name="platform" type="Node2D" parent="Path2D/PathFollow2D"]
transform/pos = Vector2( 19.9257, 9.16351 )
transform/rot = 180.0
transform/scale = Vector2( 1.7, 1.7 )
[node name="Sprite" type="Sprite" parent="Path2D/PathFollow2D/platform"]
texture = ExtResource( 1 )
vframes = 13
hframes = 5
frame = 45
[node name="Sprite3" type="Sprite" parent="Path2D/PathFollow2D/platform"]
transform/pos = Vector2( -63.9978, -0.524231 )
texture = ExtResource( 1 )
vframes = 13
hframes = 5
frame = 45
[node name="Sprite1" type="Sprite" parent="Path2D/PathFollow2D/platform"]
transform/pos = Vector2( 63.9979, 0.524231 )
texture = ExtResource( 1 )
vframes = 13
hframes = 5
frame = 43
[node name="Sprite2" type="Sprite" parent="Path2D/PathFollow2D/platform"]
transform/pos = Vector2( -127.996, -1.04849 )
transform/rot = 3.57518e-06
texture = ExtResource( 1 )
vframes = 13
hframes = 5
frame = 39
[node name="Sprite4" type="Sprite" parent="Path2D/PathFollow2D/platform"]
transform/rot = 3.57518e-06
texture = ExtResource( 1 )
vframes = 13
hframes = 5
frame = 50
[node name="RigidBody2D" type="KinematicBody2D" parent="Path2D/PathFollow2D"]
transform/pos = Vector2( 207.375, -72.253 )
transform/rot = 179.531
input/pickable = false
shapes/0/shape = SubResource( 3 )
shapes/0/transform = Matrix32( 1.48754, -8.85949e-06, 5.95581e-06, 1, 133.769, -90.2688 )
shapes/0/trigger = false
collision/layers = 2
collision/mask = 15
collision/margin = 0.08
[node name="CollisionShape2D" type="CollisionShape2D" parent="Path2D/PathFollow2D/RigidBody2D"]
transform/pos = Vector2( 133.769, -90.2688 )
transform/rot = 0.000341243
transform/scale = Vector2( 1.48754, 1 )
shape = SubResource( 3 )
trigger = false
_update_shape_index = 0

18
Scenes/Events/heart.gd Normal file
View file

@ -0,0 +1,18 @@
extends Area2D
export(int) var lifes = 1
onready var sound = get_node("Sound")
onready var sprite = get_node("Sprite")
func _ready():
sound.connect("finished",self,"queue_free")
func _on_Area2D_body_enter( body ):
if(body.is_in_group("player")):
if (body.can_add_life()):
sprite.set_opacity(0)
disconnect("body_enter",self,"_on_Area2D_body_enter")
body.add_life()
if global.sound:
sound.play()

54
Scenes/Events/heart.tscn Normal file
View file

@ -0,0 +1,54 @@
[gd_scene load_steps=5 format=1]
[ext_resource path="res://Scenes/Events/heart.gd" type="Script" id=1]
[ext_resource path="res://Sprites/GUI/HUD/heart_full.png" type="Texture" id=2]
[ext_resource path="res://Sound/heart_sound.ogg" type="AudioStream" id=3]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 11.274, 9.08089 )
[node name="Heart" type="Area2D"]
input/pickable = false
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 2.49193, 0, 0, 2.79981, -2.03185, 7.34944 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 0.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision/layers = 16
script/script = ExtResource( 1 )
lifes = 1
[node name="Sprite" type="Sprite" parent="."]
transform/pos = Vector2( -2.02597, 7.01037 )
transform/scale = Vector2( 1.02304, 0.941319 )
texture = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
transform/pos = Vector2( -2.03185, 7.34944 )
transform/scale = Vector2( 2.49193, 2.79981 )
shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[node name="Sound" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 3 )
stream/play = false
stream/loop = false
stream/volume_db = 7.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[connection signal="body_enter" from="." to="." method="_on_Area2D_body_enter"]

220
Scenes/Events/jail.tscn Normal file
View file

@ -0,0 +1,220 @@
[gd_scene load_steps=28 format=1]
[ext_resource path="res://Scenes/Events/cage.tres.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Charasets/jail.png" type="Texture" id=2]
[ext_resource path="res://Sound/apple_sound.ogg" type="AudioStream" id=3]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0000.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0001.png" type="Texture" id=5]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0002.png" type="Texture" id=6]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0003.png" type="Texture" id=7]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0004.png" type="Texture" id=8]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0005.png" type="Texture" id=9]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0006.png" type="Texture" id=10]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0007.png" type="Texture" id=11]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0008.png" type="Texture" id=12]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0009.png" type="Texture" id=13]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0010.png" type="Texture" id=14]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0011.png" type="Texture" id=15]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0012.png" type="Texture" id=16]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0013.png" type="Texture" id=17]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0014.png" type="Texture" id=18]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0015.png" type="Texture" id=19]
[ext_resource path="res://Sprites/Charasets/chickens/chickens0016.png" type="Texture" id=20]
[ext_resource path="res://Sprites/Effects/jail_particles.png" type="Texture" id=21]
[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=22]
[ext_resource path="res://Sound/cage_explosion.ogg" type="AudioStream" id=23]
[ext_resource path="res://Scenes/Events/text_dialog.tscn" type="PackedScene" id=24]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 16.0518, 11.0722 )
[sub_resource type="SpriteFrames" id=2]
animations = [ {
"frames": [ ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 18 ), ExtResource( 19 ), ExtResource( 20 ) ],
"loop": true,
"name": "Idle",
"speed": 20.0
} ]
[sub_resource type="ColorRamp" id=3]
offsets = FloatArray( 0, 0.00787402, 1 )
colors = ColorArray( 0, 0, 0, 1, 0.71875, 0.71875, 0.71875, 1, 1, 1, 1, 0 )
[node name="Cage" type="StaticBody2D" groups=[
"cages",
]]
input/pickable = false
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 2.38822, 0, 0, 2.59377, -0.499996, -1.5 )
shapes/0/trigger = false
collision/layers = 16
collision/mask = 1
constant_linear_velocity = Vector2( 0, 0 )
constant_angular_velocity = 0.0
friction = 1.0
bounce = 0.0
script/script = ExtResource( 1 )
base_key_texts = "CHICKEN_ADVICE_"
keys_size = 62
[node name="Foreground" type="Sprite" parent="."]
z/z = 1
texture = ExtResource( 2 )
hframes = 2
region_rect = Rect2( 0, 0, 78, 61 )
[node name="Background" type="Sprite" parent="."]
z/z = -1
texture = ExtResource( 2 )
hframes = 2
frame = 1
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
transform/pos = Vector2( -0.499996, -1.5 )
transform/scale = Vector2( 2.38822, 2.59377 )
shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[node name="Sound" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 3 )
stream/play = false
stream/loop = false
stream/volume_db = 5.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[node name="Animals" type="AnimatedSprite" parent="."]
frames = SubResource( 2 )
animation = "Idle"
frame = 15
playing = true
[node name="Bars" type="Particles2D" parent="."]
transform/pos = Vector2( 0, 1 )
config/amount = 80
config/lifetime = 0.9
config/emit_timeout = 0.1
config/emitting = false
config/process_mode = 1
config/half_extents = Vector2( 20, 20 )
config/local_space = false
config/explosiveness = 0.4
config/texture = ExtResource( 21 )
params/direction = 180.0
params/spread = 180.0
params/linear_velocity = 200.0
params/spin_velocity = 5.0
params/orbit_velocity = 0.0
params/gravity_direction = 1.0
params/gravity_strength = 200.0
params/radial_accel = 1.0
params/tangential_accel = 0.0
params/damping = 100.0
params/initial_angle = 5.0
params/initial_size = 1.0
params/final_size = 1.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/linear_velocity = 0.2
randomness/spin_velocity = 0.2
randomness/initial_angle = 10.0
color/color_ramp = SubResource( 3 )
[node name="Dust" type="Particles2D" parent="."]
transform/pos = Vector2( 0, 1 )
z/z = -1
config/amount = 200
config/lifetime = 0.8
config/emit_timeout = 0.1
config/emitting = false
config/process_mode = 1
config/half_extents = Vector2( 20, 20 )
config/local_space = false
config/explosiveness = 0.4
config/texture = ExtResource( 22 )
params/direction = 0.0
params/spread = 180.0
params/linear_velocity = 100.0
params/spin_velocity = 5.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 0.0
params/radial_accel = 1.0
params/tangential_accel = 0.0
params/damping = 100.0
params/initial_angle = 5.0
params/initial_size = 1.0
params/final_size = 2.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/linear_velocity = 0.2
randomness/spin_velocity = 0.2
randomness/initial_angle = 10.0
color/color = Color( 0.5, 0.5, 0.5, 1 )
color/color_ramp = SubResource( 3 )
[node name="Area2D" type="Area2D" parent="."]
editor/display_folded = true
transform/pos = Vector2( 9.53674e-07, -0.999999 )
transform/scale = Vector2( 1.34375, 1.09375 )
input/pickable = true
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 1.85446, 0, 0, 2.55983, -0.744187, -8.9407e-07 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
[node name="CollisionShape2D1" type="CollisionShape2D" parent="Area2D"]
transform/pos = Vector2( -0.744187, -8.9407e-07 )
transform/scale = Vector2( 1.85446, 2.55983 )
shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[node name="StreamPlayer" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 23 )
stream/play = false
stream/loop = false
stream/volume_db = 7.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[node name="Node2D" type="Node2D" parent="."]
transform/pos = Vector2( 1, -21 )
transform/scale = Vector2( 0.58, 0.58 )
[node name="Text" parent="Node2D" instance=ExtResource( 24 )]
margin/left = -188.0
margin/top = -47.0
margin/right = 202.0
margin/bottom = 40.0
[connection signal="body_enter" from="Area2D" to="." method="_on_Area2D_body_enter"]

26
Scenes/Events/machete.gd Normal file
View file

@ -0,0 +1,26 @@
extends Node2D
export (int) var damage = 1
export (int) var velocity = 13
export (int) var animation_speed = 3
var vel_vec = Vector2(-velocity,0);
func _ready():
set_process(true)
func _on_Area2D_body_enter( body ):
if (body.is_in_group("player")):
body.on_receive_damage(damage)
queue_free()
func set_right (right):
if (right):
get_node("Sprite/AnimationPlayer").set_speed(-animation_speed)
vel_vec = Vector2(velocity,0);
else:
get_node("Sprite/AnimationPlayer").set_speed(animation_speed)
vel_vec = Vector2(-velocity,0);
func _process(delta):
set_pos(get_pos() + vel_vec)

View file

@ -0,0 +1,74 @@
[gd_scene load_steps=5 format=1]
[ext_resource path="res://Scenes/Events/machete.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Effects/machete.png" type="Texture" id=2]
[sub_resource type="CircleShape2D" id=2]
custom_solver_bias = 0.0
radius = 12.0234
[sub_resource type="Animation" id=1]
resource/name = "spin"
length = 1.0
loop = true
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:transform/rot")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.5, 1 ),
"transitions": FloatArray( 1, 1, 1 ),
"update": 0,
"values": [ 0.0, 180.1, 360.0 ]
}
[node name="Node2D" type="Node2D"]
transform/scale = Vector2( 2, 2 )
script/script = ExtResource( 1 )
damage = 1
velocity = 13
animation_speed = 3
[node name="Area2D" type="Area2D" parent="."]
transform/scale = Vector2( 1, 1 )
input/pickable = true
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
collision/layers = 123
collision/mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
transform/scale = Vector2( 1, 1 )
shape = SubResource( 2 )
trigger = false
_update_shape_index = 0
[node name="Sprite" type="Sprite" parent="."]
texture = ExtResource( 2 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="Sprite"]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/spin = SubResource( 1 )
playback/active = true
playback/speed = 3.0
blend_times = [ ]
autoplay = "spin"
[connection signal="body_enter" from="Area2D" to="." method="_on_Area2D_body_enter"]

View file

@ -0,0 +1,31 @@
[gd_scene load_steps=2 format=1]
[ext_resource path="res://Sprites/Effects/light_mask.png" type="Texture" id=1]
[node name="Light2D" type="Light2D"]
visibility/light_mask = 2
transform/scale = Vector2( 2.5, 2.5 )
z/z = 10
z/relative = false
enabled = true
editor_only = false
texture = ExtResource( 1 )
offset = Vector2( 0, 0 )
scale = 1.0
color = Color( 1, 1, 1, 1 )
energy = 1.0
mode = 3
range/height = 0.0
range/z_min = -1024
range/z_max = 1024
range/layer_min = 0
range/layer_max = 0
range/item_mask = 2
shadow/enabled = false
shadow/color = Color( 0, 0, 0, 0 )
shadow/buffer_size = 2048
shadow/esm_multiplier = 80.0
shadow/item_mask = 1

View file

@ -0,0 +1,9 @@
extends Area2D
export(String, MULTILINE) var text
func _on_Area2D_body_enter( body):
if (body.is_in_group("player")):
get_node("Text").set_text(text)
get_node("Text/AnimationPlayer").play("Apear")
get_node("CollisionShape2D").queue_free()

View file

@ -4,6 +4,7 @@ export var LIFE_TIME = 3
onready var trail = get_node("Trail")
onready var splash = get_node("Splash")
onready var sound = get_node("Sound")
var t = Timer.new()
var end = false
@ -22,6 +23,8 @@ func destroy():
queue_free()
func _ready():
if global.sound:
sound.play("bullet_sound",0)
t.set_wait_time(LIFE_TIME)
t.set_one_shot(true)
self.add_child(t)
@ -36,4 +39,6 @@ func _on_RigidBody2D_body_enter( body ):
elif (end):
destroy()
func _on_RigidBody2D_body_enter_shape( body_id, body, body_shape, local_shape ):
if global.sound:
sound.play("bullet_sound", 0)

View file

@ -1,15 +1,24 @@
[gd_scene load_steps=5 format=1]
[gd_scene load_steps=7 format=1]
[ext_resource path="res://Scenes/Events/milk_bullet.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=2]
[ext_resource path="res://Scenes/Events/milk_splash.tscn" type="PackedScene" id=3]
[ext_resource path="res://Sound/bullet_sound.wav" type="Sample" id=4]
[sub_resource type="CircleShape2D" id=1]
custom_solver_bias = 0.0
radius = 9.52631
[sub_resource type="SampleLibrary" id=2]
samples/bullet_sound = {
"db": 0.0,
"pitch": 1.0,
"priority": 0,
"sample": ExtResource( 4 )
}
[node name="RigidBody2D" type="RigidBody2D" groups=[
"bullet",
]]
@ -26,7 +35,7 @@ friction = 0.0
bounce = 1.0
gravity_scale = 20.0
custom_integrator = false
continuous_cd = 0
continuous_cd = 2
contacts_reported = 1
contact_monitor = true
sleeping = false
@ -71,6 +80,19 @@ params/anim_initial_pos = 0.0
[node name="Splash" parent="." instance=ExtResource( 3 )]
[node name="Sound" type="SamplePlayer2D" parent="."]
params/volume_db = 6.0
params/pitch_scale = 1.0
params/attenuation/min_distance = 0.0
params/attenuation/max_distance = 750.0
params/attenuation/distance_exp = 2.37841
config/polyphony = 3
config/samples = SubResource( 2 )
config/pitch_random = 0.135
[connection signal="body_enter" from="." to="." method="_on_RigidBody2D_body_enter"]
[connection signal="body_enter_shape" from="." to="." method="_on_RigidBody2D_body_enter_shape"]

View file

@ -4,9 +4,11 @@ onready var middle = get_node("middle")
onready var end = get_node("end")
onready var origin = get_node("origin")
onready var sound = get_node("sound")
var player
export var damage = 50
export var damage = 120
var enabled = false
const MAX_DISTANCE = 10000
@ -35,6 +37,8 @@ func enable():
end.get_node("Area2D").enable()
origin.set_emitting(true)
middle.set_opacity(1)
if global.sound:
sound.play()
set_process(true)
func disable():
@ -42,6 +46,8 @@ func disable():
end.set_emitting(false)
end.get_node("Area2D").disable()
middle.set_opacity(0)
if global.sound:
sound.stop()
set_process(false)
func _process(delta):
@ -50,8 +56,10 @@ func _process(delta):
if (is_colliding()):
end_point = Vector2 (get_global_pos().distance_to(get_collision_point()), 29)
end.set_emitting(true)
else:
end_point = Vector2 (distance, 29)
end.set_emitting(false)
middle.set_region_rect(Rect2(get_pos(),end_point))
end.set_global_pos(get_collision_point())

5
Scenes/Events/music.gd Normal file
View file

@ -0,0 +1,5 @@
extends StreamPlayer
func _ready():
if global.music:
play(0)

View file

@ -0,0 +1,34 @@
[gd_scene load_steps=4 format=1]
[ext_resource path="res://Scenes/Events/map_text_dialog.gd" type="Script" id=1]
[ext_resource path="res://Scenes/Events/text_dialog.tscn" type="PackedScene" id=2]
[sub_resource type="RectangleShape2D" id=1]
custom_solver_bias = 0.0
extents = Vector2( 33, 32 )
[node name="Area2D" type="Area2D"]
input/pickable = true
shapes/0/shape = SubResource( 1 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
script/script = ExtResource( 1 )
text = null
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
trigger = false
_update_shape_index = 0
[node name="Text" parent="." instance=ExtResource( 2 )]
[connection signal="body_enter" from="." to="." method="_on_Area2D_body_enter"]

View file

@ -7,67 +7,90 @@ signal set_max_milk
signal update_life
signal set_max_life
const GRAVITY = 3500.0
const GRAVITY = 4000.0
const FLYING_MOVEMENT_SPEED = 1
export var JUMP_SPEED = 400
const SLIDE_LEVEL = 40
export(int) var MAX_JUMP_TIME = 20
export var altitude = 0.5
export(int) var MAX_WALK_SPEED = 450
const SLIDE_LEVEL = 80
const WALK_SPEED_INCREMENT = 20
var walk_speed = 0
var floor_velocity = Vector2()
onready var shooter = get_node("shooter")
onready var sprite = get_node("sprite")
onready var animation = get_node("sprite/animations")
onready var foots = get_node("foots")
onready var camera = get_node("sprite/Camera2D")
onready var sound = get_node("sound")
onready var hud_milk = get_tree().get_nodes_in_group("milk_hud")[0]
onready var hud_life = get_tree().get_nodes_in_group("life_hud")[0]
onready var hud_cowbell = get_tree().get_nodes_in_group("cowbell_hud")[0]
onready var cowbell_collector = get_node("cowbell_collector")
var can_jump = true
var on_ground = true
var jumping = false
var velocity = Vector2()
var final_velocity = Vector2()
var jump_time = 0
var jump_key_pressed = false
var jump_key_released = true
var colliding_in_jump = false
var right = false
var left = false
var receive_damage = true
export(int) var max_milk = 500
export(int) var milk_level = 0
export(int) var life = 3
export(int) var MAX_JUMP_TIME = 20
export(int) var MAX_WALK_SPEED = 450
export(int) var invulneravility_time = 16
export var JUMP_SPEED = 400
export var altitude = 0.5
export(int) var cages_open = 0
func _integrate_forces(s):
print ("a")
var lv = s.get_linear_velocity()
var step = s.get_step()
func open_cage(var number):
cages_open += number
func add_cowbells(var number):
global.cowbells += number
hud_cowbell.set_counter (global.cowbells, cowbell_collector.play_sound())
func add_bonus (var quantity):
global.cowbells += quantity
hud_cowbell.bonus(quantity)
func is_falling ():
return velocity.y > 0
func get_max_milk():
return max_milk
func add_milk(amount):
if (milk_level + amount > max_milk):
milk_level = max_milk
if (global.milk_level + amount > global.max_milk):
global.milk_level = global.max_milk
else:
milk_level += amount
emit_signal("update_milk", get_milk_level());
global.milk_level += amount
emit_signal("update_milk", global.milk_level);
func get_milk_level():
return milk_level
func can_add_life():
if (global.life < global.max_life):
return true
else:
return false
func add_life():
global.life += 1
emit_signal ("update_life", global.life)
func decrease_milk(amount):
milk_level = milk_level - amount
emit_signal("update_milk", get_milk_level());
global.milk_level = global.milk_level - amount
emit_signal("update_milk", global.milk_level );
func on_opacity_low ():
sprite.set_modulate(Color("fb12e7"))
@ -77,8 +100,8 @@ func on_opacity_high ():
func on_receive_damage (amount):
if (can_receive_damage()):
life = life - amount
emit_signal ("update_life", life)
global.life = global.life - amount
emit_signal ("update_life", global.life)
show_damage()
func can_receive_damage ():
@ -112,33 +135,37 @@ func show_damage ():
func can_jump_more ():
return jump_time > 0
func play_sound():
if global.sound:
sound.play()
func _fixed_process(delta):
if (jumping):
jump_time -= altitude
velocity.y += delta * GRAVITY
# Salto
if (can_jump and jump_key_pressed):
if (can_jump and jump_key_pressed):
play_sound()
velocity.y = - JUMP_SPEED
velocity += floor_velocity
jumping = true
jump_time = MAX_JUMP_TIME
can_jump = false
if (jumping and can_jump_more() and jump_key_pressed):
if (jumping and can_jump_more() and jump_key_pressed):
velocity.y = - JUMP_SPEED + (MAX_JUMP_TIME - jump_time) * 20
jumping = true
# Movimiento horizontal
# Movimiento horizontal
if (!right and !left):
sprite.set_animation("Idle")
if (velocity.x > SLIDE_LEVEL):
if (velocity.x > SLIDE_LEVEL):
velocity.x -= SLIDE_LEVEL
elif (velocity.x < -SLIDE_LEVEL):
velocity.x += SLIDE_LEVEL
else:
else:
velocity.x = 0
walk_speed = 0
var motion = velocity * delta
if (jumping and test_move(motion)):
@ -147,85 +174,136 @@ func _fixed_process(delta):
else:
motion.x = -0.15
motion = move(motion)
# Control de colisiones
if (!colliding_in_jump):
motion = move(motion)
else:
motion = move(Vector2(0, motion.y))
colliding_in_jump = false
# Control de colisiones
if (is_colliding()):
var normal = get_collision_normal()
if (normal.y < -0.35):
floor_velocity = get_collider_velocity()
if (floor_velocity != Vector2()):
move(Vector2(floor_velocity.x / 60, floor_velocity.y / 60))
motion.y = 0
velocity.y = 0
# Está en el suelo
if (!jumping and jump_key_released):
on_ground = true
can_jump = true
jumping = false
can_jump = true
motion.y = 0
if (normal.y > -0.9):
motion.x += motion.x * (-normal.y)
motion = normal.slide(motion)
velocity.y = 0
else:
# Está chocándose contra techo o apred
else:
# Está chocándose contra techo o pared
can_jump = false
colliding_in_jump = true
motion = normal.slide(motion)
jump_time = 0
# Si está chocando contra el techo hacerlo caer
if (normal.y > 0.2):
velocity.y = 0
move(motion)
else:
else:
can_jump = false
func _ready():
connect("set_max_milk",hud_milk,"on_set_max_milk")
connect("update_milk",hud_milk,"on_update_milk_bar")
connect("update_life",hud_life,"on_update_life")
connect("set_max_life",hud_life,"on_set_max_life")
emit_signal("set_max_milk", get_max_milk())
emit_signal("update_milk", get_milk_level())
emit_signal("set_max_life", life)
emit_signal("update_life", life)
func enable_player():
set_process_input(true)
set_fixed_process(true)
sprite.set_opacity(1)
reset_inputs()
func disable_player():
set_process_input(false)
set_fixed_process(false)
sprite.set_opacity(0)
func _ready():
#global.reset_player()
sprite.set_opacity(0)
connect("set_max_milk",hud_milk,"on_set_max_milk")
connect("update_milk",hud_milk,"on_update_milk_bar")
connect("update_life",hud_life,"on_update_life")
connect("set_max_life",hud_life,"on_set_max_life")
#emit_signal("update_milk", global.milk_level)
emit_signal("update_life", global.life)
func set_movement_left ():
animation.play("walk")
emit_signal("looking_left")
velocity.x = -MAX_WALK_SPEED
sprite.set_flip_h(true)
func set_movement_right():
animation.play("walk")
velocity.x = MAX_WALK_SPEED
emit_signal("looking_right")
sprite.set_flip_h(false)
func reset_inputs():
left = false
right = false
jump_key_pressed = false
jump_key_released = true
func _input(ev):
# Movimiento horizontal
if (ev.is_action_pressed("ui_left")):
left = true
sprite.set_animation("walk")
emit_signal("looking_left")
velocity.x = -MAX_WALK_SPEED
sprite.set_flip_h(true)
if (!right):
set_movement_left()
elif (ev.is_action_released("ui_left")):
left = false
if (right):
set_movement_right()
if (ev.is_action_pressed("ui_right")):
right = true
sprite.set_animation("walk")
velocity.x = MAX_WALK_SPEED
emit_signal("looking_right")
sprite.set_flip_h(false)
if (!left):
set_movement_right()
elif (ev.is_action_released("ui_right")):
right = false
if (left):
set_movement_left()
if (!right and !left):
animation.play("idle")
# Arriba
if (ev.is_action_pressed("ui_up")):
print("ui_up on")
pass
elif (ev.is_action_released("ui_up")):
print("ui_up off")
pass
# Agacharse
if (ev.is_action_pressed("ui_down")):
get_node("Collision_Normal").set_trigger(true)
get_node("Collision_Agachado").set_trigger(false)
get_node("Collision_Normal").set_trigger(true)
set_collision_mask_bit(11, 0)
elif (ev.is_action_released("ui_down")):
get_node("Collision_Normal").set_trigger(false)
get_node("Collision_Agachado").set_trigger(true)
set_collision_mask_bit(11, 1)
# Saltar
if (ev.is_action_pressed("ui_jump")):
if (ev.is_action_pressed("ui_jump") and jump_key_released):
jump_key_pressed = true
elif (ev.is_action_released("ui_jump")):
jump_key_released = true
jump_time = 0
jump_key_pressed = false
jump_key_pressed = false

View file

@ -1,84 +1,67 @@
[gd_scene load_steps=27 format=1]
[gd_scene load_steps=13 format=1]
[ext_resource path="res://Scenes/Events/player.gd" type="Script" id=1]
[ext_resource path="res://Scenes/Events/shooter.gd" type="Script" id=2]
[ext_resource path="res://Scenes/Events/ray_milk.tscn" type="PackedScene" id=3]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk1.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk2.png" type="Texture" id=5]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk3.png" type="Texture" id=6]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk4.png" type="Texture" id=7]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk5.png" type="Texture" id=8]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk6.png" type="Texture" id=9]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk7.png" type="Texture" id=10]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk8.png" type="Texture" id=11]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk9.png" type="Texture" id=12]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk10.png" type="Texture" id=13]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk11.png" type="Texture" id=14]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk12.png" type="Texture" id=15]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk13.png" type="Texture" id=16]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk14.png" type="Texture" id=17]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk15.png" type="Texture" id=18]
[ext_resource path="res://Sprites/Charasets/Player/walk/player_walk16.png" type="Texture" id=19]
[ext_resource path="res://Sprites/Charasets/Player/idle/player_idle1.png" type="Texture" id=20]
[ext_resource path="res://Sprites/Charasets/Player/idle/player_idle2.png" type="Texture" id=21]
[ext_resource path="res://Sprites/Charasets/Player/idle/player_idle3.png" type="Texture" id=22]
[ext_resource path="res://Sprites/Charasets/Player/idle/player_idle4.png" type="Texture" id=23]
[ext_resource path="res://Sprites/Charasets/cow.png" type="Texture" id=4]
[ext_resource path="res://Scenes/Events/player_animations.tres" type="Animation" id=5]
[ext_resource path="res://Scenes/Events/cowbell_collector.gd" type="Script" id=6]
[ext_resource path="res://Sound/player_jump.ogg" type="AudioStream" id=7]
[ext_resource path="res://Scenes/Events/map_light.tscn" type="PackedScene" id=8]
[sub_resource type="ConvexPolygonShape2D" id=1]
[sub_resource type="ConvexPolygonShape2D" id=5]
custom_solver_bias = 0.0
points = Vector2Array( -13.2061, 7.63341, -13.1494, -10.328, 11.2943, -10.3627, 11.4077, 7.42536, 1.19923, 13.0773, -3.50803, 13.0773 )
points = Vector2Array( -13.26, -5.39603, -9.45393, -8.08105, 6.94148, -8.08105, 11.3331, -5.21703, 11.3331, 4.27004, 9.28368, 8.56607, 1.37875, 13.0411, -3.59843, 13.0411, -11.7961, 8.38707, -13.26, 4.44904 )
[sub_resource type="RectangleShape2D" id=2]
[sub_resource type="ConvexPolygonShape2D" id=6]
custom_solver_bias = 0.0
extents = Vector2( 12.363, 15.2052 )
points = Vector2Array( -13.26, -5.39603, -9.45393, -8.08105, 6.94148, -8.08105, 11.3331, -5.21703, 11.3331, 4.27004, 9.28368, 8.56607, 1.37875, 13.0411, -3.59843, 13.0411, -11.7961, 8.38707, -13.26, 4.44904 )
[sub_resource type="SpriteFrames" id=3]
[sub_resource type="Animation" id=4]
animations = [ {
"frames": [ ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 18 ), ExtResource( 19 ) ],
"loop": true,
"name": "walk",
"speed": 27.0
}, {
"frames": [ ExtResource( 17 ) ],
"loop": true,
"name": "jump",
"speed": 5.0
}, {
"frames": [ ExtResource( 20 ), ExtResource( 21 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 22 ), ExtResource( 21 ) ],
"loop": true,
"name": "Idle",
"speed": 10.0
} ]
length = 0.6
loop = true
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ),
"transitions": FloatArray( 1, 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 0, 1, 2, 3, 2, 1 ]
}
[node name="Player" type="KinematicBody2D"]
[sub_resource type="RectangleShape2D" id=3]
transform/scale = Vector2( 2, 2 )
z/relative = false
input/pickable = true
shapes/0/shape = SubResource( 1 )
custom_solver_bias = 0.0
extents = Vector2( 10, 34.3036 )
[node name="Player" type="KinematicBody2D" groups=[
"player",
]]
transform/scale = Vector2( 1.8, 1.8 )
input/pickable = false
shapes/0/shape = SubResource( 5 )
shapes/0/transform = Matrix32( 1.89755, 0, 0, 3.10364, 2.93931, -4.91934 )
shapes/0/trigger = false
shapes/1/shape = SubResource( 2 )
shapes/1/transform = Matrix32( 2.31574, 0, 0, 1.23398, -0.18514, 15.1934 )
shapes/1/shape = SubResource( 6 )
shapes/1/transform = Matrix32( 1.89755, 0, 0, 3.10364, 2.93931, -4.91934 )
shapes/1/trigger = true
collision/layers = 1057
collision/mask = 18
collision/mask = 2066
collision/margin = 0.08
script/script = ExtResource( 1 )
JUMP_SPEED = 500
MAX_JUMP_TIME = 60
MAX_JUMP_TIME = 20
MAX_WALK_SPEED = 500
invulneravility_time = 8
JUMP_SPEED = 620
altitude = 0.5
MAX_WALK_SPEED = 550
max_milk = 500
milk_level = 0
life = 3
invulneravility_time = 1
cages_open = 0
[node name="shooter" type="Node2D" parent="."]
@ -86,10 +69,13 @@ transform/pos = Vector2( 25.3282, 2.0993 )
transform/scale = Vector2( 0.5, 0.5 )
script/script = ExtResource( 2 )
SHOOT_CADENCE = 0.1
bullet_cost = 2
[node name="ray" parent="shooter" instance=ExtResource( 3 )]
transform/pos = Vector2( -4.25251, 3.87422 )
enabled = false
cast_to = Vector2( 0, 0 )
layer_mask = 30
[node name="Collision_Normal" type="CollisionPolygon2D" parent="."]
@ -97,34 +83,54 @@ layer_mask = 30
transform/pos = Vector2( 2.93931, -4.91934 )
transform/scale = Vector2( 1.89755, 3.10364 )
build_mode = 0
polygon = Vector2Array( -3.50803, 13.0773, 1.19923, 13.0773, 11.4077, 7.42536, 11.2943, -10.3627, -13.1494, -10.328, -13.2061, 7.63341 )
polygon = Vector2Array( -13.26, -5.39603, -9.45393, -8.08105, 6.94148, -8.08105, 11.3331, -5.21703, 11.3331, 4.27004, 9.28368, 8.56607, 1.37875, 13.0411, -3.59843, 13.0411, -11.7961, 8.38707, -13.26, 4.44904 )
shape_range = Vector2( 0, 0 )
trigger = false
[node name="Collision_Agachado" type="CollisionShape2D" parent="."]
[node name="Collision_Agachado" type="CollisionPolygon2D" parent="."]
transform/pos = Vector2( -0.18514, 15.1934 )
transform/scale = Vector2( 2.31574, 1.23398 )
shape = SubResource( 2 )
transform/pos = Vector2( 2.93931, -4.91934 )
transform/scale = Vector2( 1.89755, 3.10364 )
build_mode = 0
polygon = Vector2Array( -13.26, -5.39603, -9.45393, -8.08105, 6.94148, -8.08105, 11.3331, -5.21703, 11.3331, 4.27004, 9.28368, 8.56607, 1.37875, 13.0411, -3.59843, 13.0411, -11.7961, 8.38707, -13.26, 4.44904 )
shape_range = Vector2( 1, 1 )
trigger = true
_update_shape_index = 1
[node name="sprite" type="AnimatedSprite" parent="."]
[node name="foots" type="Node2D" parent="."]
frames = SubResource( 3 )
animation = "jump"
playing = true
transform/pos = Vector2( -0.0271127, 37.1198 )
transform/scale = Vector2( 0.885237, 0.0763853 )
[node name="sprite" type="Sprite" parent="."]
texture = ExtResource( 4 )
vframes = 6
hframes = 6
frame = 6
region_rect = Rect2( 0, 0, 96, 96 )
[node name="animations" type="AnimationPlayer" parent="sprite"]
playback/process_mode = 0
playback/default_blend_time = 0.2
root/root = NodePath("..")
anims/idle = SubResource( 4 )
anims/walk = ExtResource( 5 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = "idle"
[node name="Camera2D" type="Camera2D" parent="sprite"]
transform/pos = Vector2( -16.1907, 15.3196 )
transform/pos = Vector2( -16, 16 )
transform/scale = Vector2( 23.4375, 45.3125 )
z/relative = false
offset = Vector2( 0, -80 )
anchor_mode = 1
rotating = false
current = true
zoom = Vector2( 1, 1 )
zoom = Vector2( 1.1, 1.1 )
limit/left = -10000000
limit/top = -10000000
limit/right = 10000000
@ -138,10 +144,58 @@ drag_margin/top = 0.2
drag_margin/right = 0.05
drag_margin/bottom = 0.2
[node name="foots" type="Node2D" parent="."]
[node name="cowbell_collector" type="Node2D" parent="."]
transform/pos = Vector2( -0.0271127, 37.1198 )
transform/scale = Vector2( 0.885237, 0.0763853 )
transform/scale = Vector2( 0.5, 0.5 )
script/script = ExtResource( 6 )
pitch_increment = 0.02
base_pitch = 1.5
bonus_threshold = 20
bonus_cowbells = 15
[node name="next_cowbell_time" type="Timer" parent="cowbell_collector"]
process_mode = 1
wait_time = 0.5
one_shot = false
autostart = false
[node name="sound" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 7 )
stream/play = true
stream/loop = false
stream/volume_db = 7.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[node name="Light2D" parent="." instance=ExtResource( 8 )]
[node name="BottomLevelDetector" type="Area2D" parent="." groups=[
"bottom_level_detector",
]]
transform/pos = Vector2( -0.905016, 94.1209 )
input/pickable = true
shapes/0/shape = SubResource( 3 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 3.16754, -0.452507 )
shapes/0/trigger = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
monitoring = false
collision/layers = 2
collision/mask = 2
[node name="CollisionShape" type="CollisionShape2D" parent="BottomLevelDetector"]
transform/pos = Vector2( 3.16754, -0.452507 )
shape = SubResource( 3 )
trigger = true
_update_shape_index = 0
[connection signal="looking_left" from="." to="shooter" method="_on_KinematicBody2D_looking_left"]

View file

@ -0,0 +1,19 @@
[gd_resource type="Animation" format=1]
[resource]
resource/name = "walk"
length = 0.52
loop = true
step = 0.12
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.12, 0.24, 0.36, 0.48 ),
"transitions": FloatArray( 1, 1, 1, 1, 1 ),
"update": 1,
"values": [ 6, 7, 8, 9, 10 ]
}

View file

@ -0,0 +1,62 @@
extends Node2D
const PLAYER = preload("res://Scenes/Events/player.tscn")
onready var anim = get_node("Sprite_cow/AnimationPlayer")
onready var sound = get_node("Sound")
onready var instancer = get_node("Instancer")
onready var texts = get_node("UFO_texts")
onready var total_cages = get_tree().get_nodes_in_group("cages").size()
onready var cow_is_abducted = false
var init_text = tr("UFO_JAIL_COUNTER")
var player
var mission_acomplished = false
var rest = total_cages
func _ready():
texts.set_text(str(init_text, total_cages, "."))
if global.sound:
sound.play()
anim.play("appear")
player = PLAYER.instance()
instancer.call_deferred("add_child", player)
yield(anim, "finished")
player.enable_player()
func abduct():
if global.sound:
sound.play()
player.disable_player()
anim.play("unvanish")
global.save_cowbells()
get_tree().get_nodes_in_group("ufo_store")[0].show()
func liftoff():
get_tree().get_nodes_in_group("level_selector")[0].next_level()
func deploy():
if global.sound:
sound.play()
anim.play("appear")
yield(anim, "finished")
player.enable_player()
func can_liftoff():
return rest == 0
func update_text():
rest = total_cages - player.cages_open
texts.set_text(str(init_text, rest, "."))
func _input(ev):
if (ev.is_action_pressed("ui_up")):
abduct()
func _on_Area2D_body_enter( body ):
if (body.is_in_group("player")):
set_process_input(true)
func _on_Area2D_body_exit(body):
if (body.is_in_group("player")):
set_process_input(false)

View file

@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=1]
[ext_resource path="res://Scenes/Events/player_spawner.gd" type="Script" id=1]
[node name="player_spawner" type="Node2D"]
transform/pos = Vector2( -1250, -3000 )
script/script = ExtResource( 1 )

View file

@ -0,0 +1,30 @@
extends Node2D
onready var p1 = get_node("P1")
onready var p2 = get_node("P2")
onready var area = get_node("Area2D")
export(float) var time
var emitting = true
func _ready():
get_node("Timer").set_wait_time(time)
func _on_Area2D_body_enter( body ):
if (body.is_in_group("player")):
body.on_receive_damage(1)
func toggle():
if (emitting):
p1.set_emitting(false)
p2.set_emitting(false)
area.disconnect("body_enter", self, "_on_Area2D_body_enter")
else:
p1.set_emitting(true)
p2.set_emitting(true)
area.connect("body_enter", self, "_on_Area2D_body_enter")
emitting = !emitting
func _on_Timer_timeout():
toggle()

View file

@ -0,0 +1,120 @@
[gd_scene load_steps=6 format=1]
[ext_resource path="res://Scenes/Events/poison_smoke.gd" type="Script" id=1]
[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Charasets/gas_deployer.png" type="Texture" id=3]
[sub_resource type="ColorRamp" id=1]
offsets = FloatArray( 0, 1 )
colors = ColorArray( 0.67174, 0.828125, 0.11322, 1, 0.03125, 1, 0, 0 )
[sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0
extents = Vector2( 15.8522, 78.592 )
[node name="smoke" type="Node2D"]
transform/scale = Vector2( 1.7, 1.7 )
script/script = ExtResource( 1 )
time = null
[node name="P1" type="Particles2D" parent="."]
visibility/opacity = 0.5
transform/pos = Vector2( -1.86014, 42.8179 )
config/amount = 20
config/lifetime = 0.5
config/process_mode = 1
config/half_extents = Vector2( 10, 0 )
config/texture = ExtResource( 2 )
params/direction = 180.0
params/spread = 5.0
params/linear_velocity = 350.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 0.0
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 3.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/hue_variation = 0.07
color/color = Color( 0.769531, 0.739847, 0.294586, 1 )
color/color_ramp = SubResource( 1 )
[node name="P2" type="Particles2D" parent="."]
visibility/opacity = 0.2
visibility/blend_mode = 1
transform/pos = Vector2( -1.86014, 42.8179 )
config/amount = 20
config/lifetime = 0.5
config/process_mode = 1
config/half_extents = Vector2( 10, 0 )
config/texture = ExtResource( 2 )
params/direction = 180.0
params/spread = 5.0
params/linear_velocity = 350.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 0.0
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 1.0
params/final_size = 3.0
params/hue_variation = 0.0
params/anim_speed_scale = 1.0
params/anim_initial_pos = 0.0
randomness/hue_variation = 0.07
color/color = Color( 0.699219, 0.294983, 0.294983, 1 )
color/color_ramp = SubResource( 1 )
[node name="Area2D" type="Area2D" parent="."]
input/pickable = true
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0.88028, -21.13 )
shapes/0/trigger = false
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
collision/layers = 0
collision/mask = 34
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
visibility/visible = false
transform/pos = Vector2( 0.88028, -21.13 )
shape = SubResource( 2 )
trigger = false
_update_shape_index = 0
[node name="Timer" type="Timer" parent="."]
process_mode = 1
wait_time = 1.0
one_shot = false
autostart = true
[node name="Sprite" type="Sprite" parent="."]
transform/pos = Vector2( 0, 52.8254 )
z/z = -1
texture = ExtResource( 3 )
[connection signal="body_enter" from="Area2D" to="." method="_on_Area2D_body_enter"]
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]

View file

@ -1,10 +1,10 @@
[gd_scene load_steps=6 format=1]
[gd_scene load_steps=7 format=1]
[ext_resource path="res://Scenes/Events/milk_ray.gd" type="Script" id=1]
[ext_resource path="res://Scenes/Events/milk_splash.tscn" type="PackedScene" id=2]
[ext_resource path="res://Scenes/Events/ray_milk_end.tres.gd" type="Script" id=3]
[ext_resource path="res://Sprites/Effects/milk_ray.png" type="Texture" id=4]
[ext_resource path="res://Sound/milk_ray_sound.ogg" type="AudioStream" id=5]
[sub_resource type="RectangleShape2D" id=1]
@ -15,10 +15,10 @@ extents = Vector2( 32, 32 )
enabled = true
cast_to = Vector2( 10000, 0 )
layer_mask = 6
type_mask = 10
layer_mask = 63
type_mask = 11
script/script = ExtResource( 1 )
damage = 50
damage = 120
[node name="end" parent="." instance=ExtResource( 2 )]
@ -41,7 +41,7 @@ gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
monitoring = false
priority = 100.0
monitorable = false
script/script = ExtResource( 3 )
@ -75,6 +75,17 @@ offset = Vector2( 0, -14.5 )
region = true
region_rect = Rect2( -1, 0, 0, 29 )
[node name="sound" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 5 )
stream/play = false
stream/loop = true
stream/volume_db = 10.0
stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[connection signal="body_enter" from="end/Area2D" to="end/Area2D" method="_on_Area2D_body_enter"]
[connection signal="body_exit" from="end/Area2D" to="end/Area2D" method="_on_Area2D_body_exit"]

View file

@ -3,7 +3,7 @@ extends Area2D
var body_hitted = null
func _fixed_process(delta):
body_hitted.decrease_life(0.10)
body_hitted.decrease_life(0.40)
var t = Timer.new()
t.set_wait_time(0.01)
t.set_one_shot(true)
@ -13,7 +13,7 @@ func _fixed_process(delta):
func _on_Area2D_body_enter( body ):
if (body.is_in_group("enemy")):
body.decrease_life(0.10)
body.decrease_life(0.40)
body.change_velocity(100, get_parent().get_parent().get_parent().shoot_dir.x > 0)
body_hitted = body
set_fixed_process(true)

96
Scenes/Events/rope.tscn Normal file
View file

@ -0,0 +1,96 @@
[gd_scene load_steps=2 format=1]
[ext_resource path="res://icon.png" type="Texture" id=1]
[node name="Node2D" type="Node2D"]
transform/pos = Vector2( 295.815, 142.795 )
[node name="RigidBody2D" type="RigidBody2D" parent="."]
transform/pos = Vector2( -102.509, -2.37168 )
input/pickable = false
collision/layers = 1
collision/mask = 1
mode = 0
mass = 1.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="RigidBody2D"]
texture = ExtResource( 1 )
[node name="RigidBody2D1" type="RigidBody2D" parent="."]
transform/pos = Vector2( 32.8056, 1.01471 )
input/pickable = false
collision/layers = 1
collision/mask = 1
mode = 0
mass = 0.00102041
friction = 0.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="RigidBody2D1"]
texture = ExtResource( 1 )
[node name="RigidBody2D2" type="RigidBody2D" parent="."]
transform/pos = Vector2( 162.855, 0.527039 )
input/pickable = false
collision/layers = 1
collision/mask = 1
mode = 0
mass = 0.00102041
friction = 0.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="RigidBody2D2"]
texture = ExtResource( 1 )
[node name="PinJoint2D" type="PinJoint2D" parent="."]
transform/pos = Vector2( 184.829, -23.896 )
node_a = NodePath("../RigidBody2D2")
node_b = NodePath("")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 10.0

View file

@ -3,6 +3,8 @@ extends Node2D
const BULLET = preload("res://Scenes/Events/milk_bullet.tscn")
export var SHOOT_CADENCE = 0.001
var shooting = false
signal change_milk_bottle
enum WEAPONS {
@ -14,6 +16,8 @@ var weapon = WEAPONS.regular
var shoot = false
var recharge = false
export(int) var bullet_cost = 1
onready var player = get_parent()
onready var instanced_ray = get_node("ray")
@ -30,6 +34,7 @@ func _input(ev):
set_process(true)
elif (ev.is_action_released("ui_shoot")):
instanced_ray.disable()
shooting = false
set_process(false)
# CHANGE WEAPON
@ -44,7 +49,7 @@ func _input(ev):
func check_can_shoot():
return player.get_milk_level() > 0
return global.milk_level > 0
func shoot_regular():
@ -60,19 +65,22 @@ func shoot_regular():
t.start()
yield(t, "timeout")
recharge = false
player.decrease_milk(1)
player.decrease_milk(bullet_cost)
func shoot_laser():
player.decrease_milk(0.05)
player.decrease_milk(0.3)
func _process(delta):
if (check_can_shoot()):
if (weapon == WEAPONS.regular and !recharge):
shoot_regular()
elif (weapon == WEAPONS.laser):
instanced_ray.enable()
shoot_laser()
else:
if (!shooting):
shooting = true
instanced_ray.enable()
else:
shooting = false
instanced_ray.disable()
set_process(false)

1
Scenes/Events/sound.gd Normal file
View file

@ -0,0 +1 @@

View file

@ -0,0 +1,60 @@
[gd_scene load_steps=3 format=1]
[ext_resource path="res://Fonts/pixelated_regular.fnt" type="BitmapFont" id=1]
[sub_resource type="Animation" id=1]
resource/name = "Apear"
length = 0.7
loop = false
step = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:visibility/opacity")
tracks/0/interp = 1
tracks/0/imported = false
tracks/0/keys = {
"times": FloatArray( 0, 0.7 ),
"transitions": FloatArray( 1, 1 ),
"update": 0,
"values": [ 0.0, 1.0 ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:rect/pos")
tracks/1/interp = 1
tracks/1/imported = false
tracks/1/keys = {
"times": FloatArray( 0, 0.5 ),
"transitions": FloatArray( 1, 1 ),
"update": 0,
"values": [ Vector2( -195, -44 ), Vector2( -195, -58 ) ]
}
[node name="Text" type="Label"]
focus/ignore_mouse = true
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 0
margin/left = -195.0
margin/top = -58.0
margin/right = 195.0
margin/bottom = 29.0
custom_fonts/font = ExtResource( 1 )
align = 1
autowrap = true
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
playback/process_mode = 1
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/Apear = SubResource( 1 )
playback/active = true
playback/speed = 1.0
blend_times = [ ]
autoplay = ""

466
Scenes/Events/try.tscn Normal file
View file

@ -0,0 +1,466 @@
[gd_scene load_steps=13 format=1]
[ext_resource path="res://Sprites/Boss/body.png" type="Texture" id=1]
[ext_resource path="res://Sprites/Boss/leg_back_up.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Boss/leg_back_down.png" type="Texture" id=3]
[ext_resource path="res://Sprites/Boss/foot_back.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Boss/leg_front_up.png" type="Texture" id=5]
[ext_resource path="res://Sprites/Boss/leg_front_down.png" type="Texture" id=6]
[ext_resource path="res://Sprites/Boss/foot_front.png" type="Texture" id=7]
[ext_resource path="res://Sprites/Boss/head.png" type="Texture" id=8]
[ext_resource path="res://Sprites/Boss/wire.png" type="Texture" id=9]
[ext_resource path="res://Sprites/Boss/finger.png" type="Texture" id=10]
[sub_resource type="GDScript" id=1]
script/source = "export (NodePath) var START
export (NodePath) var END
onready var start = get_node(START)
onready var end = get_node(END)
onready var x1 = start.get_pos().x
onready var x2 = end.get_pos().x
onready var y1 = start.get_pos().y
onready var y2 = end.get_pos().y
const segment = preload(\"res://Scenes/Events/chain_segment.tscn\")
func next_segment(x):
return Vector2(x , ((x - x1) * (y2 - y1) / (x2 - x1)) + y1)
func _ready():
var distance = start.get_pos().distance_to(end.get_pos())
#var angle = start.get_pos().angle_to(end.get_pos())
#print (angle)
var n_segments = distance / 2
var position = start.get_pos()
var last_segment = start
for i in range(0, n_segments - 1):
var aux_segment = segment.instance()
position -= Vector2(2, 0)
aux_segment.set_pos(next_segment(position.x))
#aux_segment.set_rotd(angle)
add_child(aux_segment)
last_segment.get_node(\"joint\").set_node_a(last_segment.get_path())
last_segment.get_node(\"joint\").set_node_b(aux_segment.get_path())
last_segment = aux_segment
end.get_node(\"joint\").set_node_a(end.get_path())
end.get_node(\"joint\").set_node_b(last_segment.get_path())"
[sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0
extents = Vector2( 7.87903, 3.93616 )
[node name="Node2D" type="Node2D"]
transform/pos = Vector2( 636.567, 381.293 )
[node name="Body" type="Sprite" parent="."]
transform/pos = Vector2( 40.0902, 8.82797 )
transform/rot = -7.09402
texture = ExtResource( 1 )
offset = Vector2( -35.4693, -3.91888 )
__meta__ = {
"_edit_ik_": true
}
[node name="Leg_Back_Up" type="Sprite" parent="Body"]
editor/display_folded = true
transform/pos = Vector2( 4.04352, 5.63336 )
transform/rot = -5.66237
transform/scale = Vector2( 1, 1 )
z/z = -1
texture = ExtResource( 2 )
offset = Vector2( -40.4423, -11.1284 )
__meta__ = {
"_edit_bone_": true
}
[node name="Leg_Back_Down" type="Sprite" parent="Body/Leg_Back_Up"]
transform/pos = Vector2( -24.7578, 20.5191 )
transform/rot = 2.29481
transform/scale = Vector2( 1, 1 )
z/z = -1
texture = ExtResource( 3 )
offset = Vector2( -16.3306, -34.5348 )
__meta__ = {
"_edit_bone_": true
}
[node name="Foot_Back" type="Sprite" parent="Body/Leg_Back_Up/Leg_Back_Down"]
transform/pos = Vector2( 12.0957, 36.1506 )
transform/rot = 3.37345
transform/scale = Vector2( 1, 1 )
texture = ExtResource( 4 )
offset = Vector2( -28.4257, -72.6998 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D" type="Position2D" parent="Body/Leg_Back_Up/Leg_Back_Down/Foot_Back"]
transform/pos = Vector2( -23.415, 2.88678 )
transform/rot = 9.20492
transform/scale = Vector2( 1, 1 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D" type="Position2D" parent="Body/Leg_Back_Up/Leg_Back_Down/Foot_Back/Position2D"]
transform/pos = Vector2( -11.8035, 1.51938 )
__meta__ = {
"_edit_bone_": true
}
[node name="Leg_Front_Up" type="Sprite" parent="Body"]
editor/display_folded = true
transform/pos = Vector2( 4.23431, 5.69522 )
transform/rot = 41.402
texture = ExtResource( 5 )
offset = Vector2( -40.3387, -11.0942 )
__meta__ = {
"_edit_bone_": true
}
[node name="Leg_Front_Down" type="Sprite" parent="Body/Leg_Front_Up"]
transform/pos = Vector2( -23.4612, 22.1521 )
transform/rot = -7.82368
z/z = -1
texture = ExtResource( 6 )
offset = Vector2( -17.9009, -35.8193 )
__meta__ = {
"_edit_bone_": true
}
[node name="Foot_Front" type="Sprite" parent="Body/Leg_Front_Up/Leg_Front_Down"]
transform/pos = Vector2( 10.2595, 33.1961 )
transform/rot = -31.5029
texture = ExtResource( 7 )
offset = Vector2( -27.9519, -70.4521 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D" type="Position2D" parent="Body/Leg_Front_Up/Leg_Front_Down/Foot_Front"]
transform/pos = Vector2( -24.865, 2.81232 )
transform/rot = -3.13296
transform/scale = Vector2( 1, 1 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D1" type="Position2D" parent="Body/Leg_Front_Up/Leg_Front_Down/Foot_Front/Position2D"]
transform/pos = Vector2( -12.7146, -0.980713 )
__meta__ = {
"_edit_bone_": true
}
[node name="Head" type="Sprite" parent="Body"]
transform/pos = Vector2( -35.4153, -51.9812 )
transform/rot = 9.44869
texture = ExtResource( 8 )
offset = Vector2( 1.37228, 49.4121 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D" type="Position2D" parent="Body/Head"]
transform/pos = Vector2( -3.45715, -6.41968 )
transform/rot = -61.5417
transform/scale = Vector2( 1, 1 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D1" type="Position2D" parent="Body/Head/Position2D"]
transform/pos = Vector2( -25.1898, 0.367554 )
transform/rot = -8.35903
transform/scale = Vector2( 1.09817, 1.15621 )
__meta__ = {
"_edit_bone_": true
}
[node name="Position2D2" type="Position2D" parent="Body/Head/Position2D/Position2D1"]
transform/pos = Vector2( -17.3925, 3.50458 )
__meta__ = {
"_edit_bone_": true
}
[node name="Hand_Back" type="Position2D" parent="."]
transform/pos = Vector2( -37.5853, -14.0595 )
transform/rot = 75.6957
transform/scale = Vector2( 0.999999, 0.999999 )
z/z = -1
[node name="Wire_Back" type="Node2D" parent="Hand_Back"]
transform/pos = Vector2( -3.67201, -2.14014 )
transform/rot = -75.6957
transform/scale = Vector2( 0.5, 0.5 )
z/z = -5
script/script = SubResource( 1 )
START = NodePath("Start")
END = NodePath("End")
[node name="End" type="RigidBody2D" parent="Hand_Back/Wire_Back"]
editor/display_folded = true
transform/pos = Vector2( 15.6561, -16.9876 )
transform/rot = 172.627
z/z = -3
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 1.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="Hand_Back/Wire_Back/End"]
texture = ExtResource( 9 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hand_Back/Wire_Back/End"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="Hand_Back/Wire_Back/End"]
transform/pos = Vector2( -0.638733, 0.000701904 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 1.0
[node name="Start" type="RigidBody2D" parent="Hand_Back/Wire_Back"]
editor/display_folded = true
transform/pos = Vector2( 128.498, -49.2625 )
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 1.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="Hand_Back/Wire_Back/Start"]
visibility/visible = false
texture = ExtResource( 9 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hand_Back/Wire_Back/Start"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="Hand_Back/Wire_Back/Start"]
transform/pos = Vector2( -7.43176, 0.104675 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D2")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 1.0
[node name="Sprite2" type="Sprite" parent="Hand_Back"]
transform/pos = Vector2( 8.87546, 49.2749 )
transform/rot = -80.9607
texture = ExtResource( 10 )
[node name="Sprite" type="Sprite" parent="Hand_Back"]
transform/pos = Vector2( 16.9435, 51.6866 )
transform/rot = -80.9607
z/z = 1
texture = ExtResource( 10 )
[node name="Sprite1" type="Sprite" parent="Hand_Back"]
transform/pos = Vector2( 10.0309, 59.491 )
transform/rot = -80.9607
z/z = 1
texture = ExtResource( 10 )
[node name="Hand_Front" type="Position2D" parent="."]
transform/pos = Vector2( -27.3054, -3.51297 )
transform/rot = 79.1726
transform/scale = Vector2( 0.999999, 0.999999 )
[node name="Wire_Front" type="Node2D" parent="Hand_Front"]
transform/pos = Vector2( 3.30298, 2.57446 )
transform/rot = -79.1726
transform/scale = Vector2( 0.5, 0.5 )
script/script = SubResource( 1 )
START = NodePath("Start")
END = NodePath("End")
[node name="End" type="RigidBody2D" parent="Hand_Front/Wire_Front"]
editor/display_folded = true
transform/pos = Vector2( -5.75891, -9.81091 )
transform/rot = -178.701
transform/scale = Vector2( 1, 1 )
z/z = -3
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 1.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="Hand_Front/Wire_Front/End"]
texture = ExtResource( 9 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hand_Front/Wire_Front/End"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="Hand_Front/Wire_Front/End"]
transform/pos = Vector2( -0.638733, 0.000701904 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 1.0
[node name="Start" type="RigidBody2D" parent="Hand_Front/Wire_Front"]
editor/display_folded = true
transform/pos = Vector2( 103.764, -59.2512 )
input/pickable = false
shapes/0/shape = SubResource( 2 )
shapes/0/transform = Matrix32( 1, 0, 0, 1, 0, 0 )
shapes/0/trigger = true
collision/layers = 1
collision/mask = 1
mode = 1
mass = 1.0
friction = 1.0
bounce = 0.0
gravity_scale = 1.0
custom_integrator = false
continuous_cd = 0
contacts_reported = 0
contact_monitor = false
sleeping = false
can_sleep = true
velocity/linear = Vector2( 0, 0 )
velocity/angular = 0.0
damp_override/linear = -1.0
damp_override/angular = -1.0
[node name="Sprite" type="Sprite" parent="Hand_Front/Wire_Front/Start"]
visibility/visible = false
texture = ExtResource( 9 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hand_Front/Wire_Front/Start"]
shape = SubResource( 2 )
trigger = true
_update_shape_index = 0
[node name="joint" type="PinJoint2D" parent="Hand_Front/Wire_Front/Start"]
transform/pos = Vector2( -7.43176, 0.104675 )
node_a = NodePath("..")
node_b = NodePath("../../RigidBody2D2")
bias/bias = 0.0
collision/exclude_nodes = true
softness = 1.0
[node name="Sprite2" type="Sprite" parent="Hand_Front"]
transform/pos = Vector2( 8.87546, 49.2749 )
transform/rot = -80.9607
texture = ExtResource( 10 )
[node name="Sprite" type="Sprite" parent="Hand_Front"]
transform/pos = Vector2( 16.9435, 51.6866 )
transform/rot = -80.9607
z/z = 1
texture = ExtResource( 10 )
[node name="Sprite1" type="Sprite" parent="Hand_Front"]
transform/pos = Vector2( 10.0309, 59.491 )
transform/rot = -80.9607
z/z = 1
texture = ExtResource( 10 )

View file

@ -0,0 +1,588 @@
[gd_scene load_steps=17 format=1]
[ext_resource path="res://Scenes/Maps/tileset.xml" type="TileSet" id=1]
[ext_resource path="res://Sprites/Background/night_outside_d.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Background/night_outside_c.png" type="Texture" id=3]
[ext_resource path="res://Sprites/Background/night_outside_b.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Background/night_outside_a.png" type="Texture" id=5]
[ext_resource path="res://Scenes/Events/enemy_1.tscn" type="PackedScene" id=6]
[ext_resource path="res://Scenes/Events/apple.tscn" type="PackedScene" id=7]
[ext_resource path="res://Scenes/Events/heart.tscn" type="PackedScene" id=8]
[ext_resource path="res://Scenes/Events/cowbell.tscn" type="PackedScene" id=9]
[ext_resource path="res://Scenes/Events/death_line.tscn" type="PackedScene" id=10]
[ext_resource path="res://Scenes/Events/UFO.tscn" type="PackedScene" id=11]
[ext_resource path="res://Music/dangerous-hills-loop.ogg" type="AudioStream" id=12]
[ext_resource path="res://Scenes/Events/jail.tscn" type="PackedScene" id=13]
[ext_resource path="res://Scenes/Events/on_map_text_dialog.tscn" type="PackedScene" id=14]
[ext_resource path="res://Scenes/Events/flying_platform.tscn" type="PackedScene" id=15]
[ext_resource path="res://Scenes/Events/poison_smoke.tscn" type="PackedScene" id=16]
[node name="Level" type="Node2D" groups=[
"level",
]]
[node name="leaves_foreground" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 0
collision/mask = 0
occluder/light_mask = 1
tile_data = IntArray( )
[node name="leaves_background" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -2
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 0
collision/mask = 0
occluder/light_mask = 1
tile_data = IntArray( )
[node name="one_way_platforms1" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -1
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2048
collision/mask = 14
occluder/light_mask = 1
tile_data = IntArray( -851955, 35 )
[node name="trees" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -1
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2
collision/mask = 15
occluder/light_mask = 1
tile_data = IntArray( )
[node name="base" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -2
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2
collision/mask = 15
occluder/light_mask = 1
tile_data = IntArray( -1572880, 0, -1572879, 1, -1572878, 1, -1572877, 2, -1507344, 6, -1507343, 7, -1507342, 7, -1507341, 8, -1376271, 0, -1376270, 1, -1376269, 1, -1376268, 2, -1310735, 6, -1310734, 7, -1310733, 7, -1310732, 8 )
[node name="back" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -3
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2
collision/mask = 15
occluder/light_mask = 1
tile_data = IntArray( -1507344, 67, -1507343, 67, -1507342, 67, -1507341, 67, -1507340, 67, -1507339, 67, -1441808, 67, -1441807, 67, -1441806, 67, -1441805, 67, -1441804, 67, -1441803, 67, -1376272, 67, -1376271, 67, -1376270, 67, -1376269, 67, -1376268, 67, -1376267, 67, -1310736, 67, -1310735, 67, -1310734, 67, -1310733, 67, -1310732, 67, -1310731, 67 )
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
editor/display_folded = true
layer = -1
offset = Vector2( 0, 0 )
rotation = 0.0
scale = Vector2( 1, 1 )
scroll/offset = Vector2( 0, 0 )
scroll/base_offset = Vector2( 0, 0 )
scroll/base_scale = Vector2( 1, 1 )
scroll/limit_begin = Vector2( 1, 0 )
scroll/limit_end = Vector2( 1, 0 )
scroll/ignore_camera_zoom = true
[node name="ParallaxLayerd" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( 0, -352 )
z/z = -4
motion/scale = Vector2( 0.15, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerd"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 2 )
centered = false
region = true
region_rect = Rect2( 0, 0, 1024, 128 )
[node name="ParallaxLayerc" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -500, -352 )
z/z = -3
motion/scale = Vector2( 0.3, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerc"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 3 )
centered = false
region = true
region_rect = Rect2( 0, 0, 1200, 128 )
[node name="ParallaxLayerb" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -736, -352 )
z/z = -2
motion/scale = Vector2( 0.5, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerb"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 4 )
centered = false
region = true
region_rect = Rect2( 0, 0, 2048, 128 )
[node name="ParallaxLayera" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -736, -352 )
z/z = -1
motion/scale = Vector2( 0.8, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayera"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 5 )
centered = false
region = true
region_rect = Rect2( -1000, 0, 2048, 128 )
[node name="enemies" type="Node2D" parent="."]
transform/pos = Vector2( 2140, -960 )
transform/scale = Vector2( 1.7, 1.7 )
[node name="Enemy" parent="enemies" instance=ExtResource( 6 )]
transform/pos = Vector2( -35.2942, -176.471 )
transform/scale = Vector2( 1, 1 )
[node name="apples" type="Node2D" parent="."]
transform/pos = Vector2( -3140, -3460 )
[node name="Apple" parent="apples" instance=ExtResource( 7 )]
transform/pos = Vector2( 5140, 1240 )
amount = 20
[node name="hearts" type="Node2D" parent="."]
[node name="Heart" parent="hearts" instance=ExtResource( 8 )]
transform/pos = Vector2( 1480, -1230 )
[node name="cowbells" type="Node2D" parent="."]
editor/display_folded = true
transform/pos = Vector2( 500, 560 )
[node name="Cowbell" parent="cowbells" instance=ExtResource( 9 )]
transform/pos = Vector2( 1510, -3640 )
[node name="Block" type="Node2D" parent="cowbells"]
editor/display_folded = true
transform/pos = Vector2( 2350, -3400 )
[node name="Col" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
[node name="Cowbell18173" parent="cowbells/Block/Col" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col1" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 50, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col1" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col1" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col1" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col1" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col1" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col2" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 100, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col2" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col2" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col2" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col2" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col2" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col3" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 150, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col3" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col3" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col3" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col3" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col3" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col4" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 200, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col4" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col4" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col4" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col4" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col4" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col5" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 250, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col5" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col5" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col5" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col5" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col5" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col6" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 300, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col6" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col6" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col6" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col6" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col6" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col7" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 350, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col7" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col7" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col7" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col7" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col7" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col8" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 400, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col8" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col8" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col8" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col8" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col8" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col9" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 450, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col9" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col9" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col9" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col9" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col9" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="Col10" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 500, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col10" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col10" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col10" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col10" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col10" instance=ExtResource( 9 )]
transform/pos = Vector2( 0, 220 )
[node name="death_line" parent="." instance=ExtResource( 10 )]
editor/display_folded = false
transform/pos = Vector2( 24550, -940 )
transform/scale = Vector2( 6889, 1 )
[node name="UFO" parent="." instance=ExtResource( 11 )]
transform/pos = Vector2( -1250, -3330 )
transform/scale = Vector2( 1.7, 1.7 )
[node name="StreamPlayer" type="StreamPlayer" parent="."]
stream/stream = ExtResource( 12 )
stream/play = false
stream/loop = true
stream/volume_db = 1.0
stream/autoplay = true
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
[node name="cages" type="Node2D" parent="."]
[node name="jail" parent="cages" instance=ExtResource( 13 )]
transform/pos = Vector2( -1860, -2650 )
transform/scale = Vector2( 1.7, 1.7 )
[node name="tips" type="Node2D" parent="."]
editor/display_folded = true
transform/pos = Vector2( -1890, -3020 )
[node name="Area2D" parent="tips" instance=ExtResource( 14 )]
text = "Este camino está bloqueado. Busca otra forma de desplazarte."
[node name="moving_paltforms" type="Node2D" parent="."]
[node name="Node2D" parent="moving_paltforms" instance=ExtResource( 15 )]
[node name="smoke" type="Node2D" parent="."]
[node name="smoke" parent="smoke" instance=ExtResource( 16 )]

289
Scenes/Maps/empty_map.tscn Normal file
View file

@ -0,0 +1,289 @@
[gd_scene load_steps=14 format=1]
[ext_resource path="res://Scenes/Maps/tileset.xml" type="TileSet" id=1]
[ext_resource path="res://Sprites/Background/night_outside_d.png" type="Texture" id=2]
[ext_resource path="res://Sprites/Background/night_outside_c.png" type="Texture" id=3]
[ext_resource path="res://Sprites/Background/night_outside_b.png" type="Texture" id=4]
[ext_resource path="res://Sprites/Background/night_outside_a.png" type="Texture" id=5]
[ext_resource path="res://Scenes/Events/apple.tscn" type="PackedScene" id=6]
[ext_resource path="res://Scenes/Events/heart.tscn" type="PackedScene" id=7]
[ext_resource path="res://Scenes/Events/cowbell.tscn" type="PackedScene" id=8]
[ext_resource path="res://Scenes/Events/death_line.tscn" type="PackedScene" id=9]
[ext_resource path="res://Scenes/Events/UFO.tscn" type="PackedScene" id=10]
[ext_resource path="res://Music/dangerous-hills-loop.ogg" type="AudioStream" id=11]
[ext_resource path="res://Scenes/Events/jail.tscn" type="PackedScene" id=12]
[ext_resource path="res://Scenes/Events/on_map_text_dialog.tscn" type="PackedScene" id=13]
[node name="Level" type="Node2D" groups=[
"level",
]]
[node name="leaves_foreground" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 0
collision/mask = 0
occluder/light_mask = 1
tile_data = IntArray( )
[node name="leaves_background" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -2
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 0
collision/mask = 0
occluder/light_mask = 1
tile_data = IntArray( )
[node name="one_way_platforms1" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -1
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2048
collision/mask = 14
occluder/light_mask = 1
tile_data = IntArray( -851955, 35 )
[node name="trees" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -1
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2
collision/mask = 15
occluder/light_mask = 1
tile_data = IntArray( )
[node name="base" type="TileMap" parent="."]
transform/scale = Vector2( 1.7, 1.7 )
z/z = -2
mode = 0
tile_set = ExtResource( 1 )
cell/size = Vector2( 64, 64 )
cell/quadrant_size = 16
cell/custom_transform = Matrix32( 1, 0, 0, 1, 0, 0 )
cell/half_offset = 2
cell/tile_origin = 0
cell/y_sort = false
collision/use_kinematic = false
collision/friction = 1.0
collision/bounce = 0.0
collision/layers = 2
collision/mask = 15
occluder/light_mask = 1
tile_data = IntArray( )
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
editor/display_folded = true
layer = -1
offset = Vector2( 0, 0 )
rotation = 0.0
scale = Vector2( 1, 1 )
scroll/offset = Vector2( 0, 0 )
scroll/base_offset = Vector2( 0, 0 )
scroll/base_scale = Vector2( 1, 1 )
scroll/limit_begin = Vector2( 1, 0 )
scroll/limit_end = Vector2( 1, 0 )
scroll/ignore_camera_zoom = true
[node name="ParallaxLayerd" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( 0, -352 )
z/z = -4
motion/scale = Vector2( 0.15, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerd"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 2 )
centered = false
region = true
region_rect = Rect2( 0, 0, 1024, 128 )
[node name="ParallaxLayerc" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -500, -352 )
z/z = -3
motion/scale = Vector2( 0.3, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerc"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 3 )
centered = false
region = true
region_rect = Rect2( 0, 0, 1200, 128 )
[node name="ParallaxLayerb" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -736, -352 )
z/z = -2
motion/scale = Vector2( 0.5, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayerb"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 4 )
centered = false
region = true
region_rect = Rect2( 0, 0, 2048, 128 )
[node name="ParallaxLayera" type="ParallaxLayer" parent="ParallaxBackground"]
editor/display_folded = true
transform/pos = Vector2( -736, -352 )
z/z = -1
motion/scale = Vector2( 0.8, 0 )
motion/offset = Vector2( 1, 2000 )
motion/mirroring = Vector2( 0, 0 )
[node name="Sprite" type="Sprite" parent="ParallaxBackground/ParallaxLayera"]
transform/pos = Vector2( -3712, -2048 )
transform/scale = Vector2( 6, 6 )
texture = ExtResource( 5 )
centered = false
region = true
region_rect = Rect2( -1000, 0, 2048, 128 )
[node name="enemies" type="Node2D" parent="."]
transform/pos = Vector2( 2140, -960 )
transform/scale = Vector2( 1.7, 1.7 )
[node name="apples" type="Node2D" parent="."]
transform/pos = Vector2( -3140, -3460 )
[node name="Apple" parent="apples" instance=ExtResource( 6 )]
transform/pos = Vector2( 5140, 1240 )
amount = 20
[node name="hearts" type="Node2D" parent="."]
[node name="Heart" parent="hearts" instance=ExtResource( 7 )]
transform/pos = Vector2( 1480, -1230 )
[node name="cowbells" type="Node2D" parent="."]
editor/display_folded = true
transform/pos = Vector2( 500, 560 )
[node name="Cowbell" parent="cowbells" instance=ExtResource( 8 )]
transform/pos = Vector2( 1510, -3640 )
[node name="Block" type="Node2D" parent="cowbells"]
editor/display_folded = true
transform/pos = Vector2( 2350, -3400 )
[node name="Col" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
[node name="Cowbell18173" parent="cowbells/Block/Col" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 220 )
[node name="Col1" type="Node2D" parent="cowbells/Block"]
editor/display_folded = true
transform/pos = Vector2( 50, 0 )
[node name="Cowbell18173" parent="cowbells/Block/Col1" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 20 )
[node name="Cowbell18174" parent="cowbells/Block/Col1" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 70 )
[node name="Cowbell18175" parent="cowbells/Block/Col1" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 120 )
[node name="Cowbell18176" parent="cowbells/Block/Col1" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 170 )
[node name="Cowbell18177" parent="cowbells/Block/Col1" instance=ExtResource( 8 )]
transform/pos = Vector2( 0, 220 )
[node name="Col2

1274
Scenes/Maps/map_0.tscn Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

2111
Scenes/Maps/map_2.tscn Normal file

File diff suppressed because one or more lines are too long

1417
Scenes/Maps/map_3.tscn Normal file

File diff suppressed because it is too large Load diff

1822
Scenes/Maps/map_4.tscn Normal file

File diff suppressed because it is too large Load diff

2858
Scenes/Maps/map_5.tscn Normal file

File diff suppressed because one or more lines are too long

2237
Scenes/Maps/map_6.tscn Normal file

File diff suppressed because it is too large Load diff

2753
Scenes/Maps/map_7.tscn Normal file

File diff suppressed because one or more lines are too long

3412
Scenes/Maps/map_8.tscn Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

8
Scenes/Menu/HUD.tres.gd Normal file
View file

@ -0,0 +1,8 @@
extends Viewport
export
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass

View file

@ -1,22 +1,43 @@
[gd_scene load_steps=16 format=1]
[gd_scene load_steps=38 format=1]
[ext_resource path="res://Scenes/Maps/map_1.tscn" type="PackedScene" id=1]
[ext_resource path="res://Scenes/Menu/life_hud.gd" type="Script" id=2]
[ext_resource path="res://Sprites/GUI/HUD/heart_full.png" type="Texture" id=3]
[ext_resource path="res://Scenes/Menu/buttons_hud.gd" type="Script" id=4]
[ext_resource path="res://Sprites/GUI/Buttons/bttn_arrow.png" type="Texture" id=5]
[ext_resource path="res://Sprites/GUI/Buttons/bttn_jump.png" type="Texture" id=6]
[ext_resource path="res://Sprites/GUI/Buttons/bttn.png" type="Texture" id=7]
[ext_resource path="res://Sprites/GUI/Buttons/btn_shoot.png" type="Texture" id=8]
[ext_resource path="res://Scenes/Menu/milk_botte_hud.gd" type="Script" id=9]
[ext_resource path="res://Sprites/GUI/HUD/milbar_outter_2.png" type="Texture" id=10]
[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_3.png" type="Texture" id=11]
[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_1.png" type="Texture" id=12]
[ext_resource path="res://Sprites/GUI/HUD/milkbar_inner.png" type="Texture" id=13]
[ext_resource path="res://Scenes/Menu/level_selector.gd" type="Script" id=1]
[ext_resource path="res://Scenes/Maps/map_0.tscn" type="PackedScene" id=2]
[ext_resource path="res://Scenes/Maps/map_3.tscn" type="PackedScene" id=3]
[ext_resource path="res://Scenes/Maps/map_1.tscn" type="PackedScene" id=4]
[ext_resource path="res://Scenes/Maps/map_2.tscn" type="PackedScene" id=5]
[ext_resource path="res://Scenes/Maps/map_4.tscn" type="PackedScene" id=6]
[ext_resource path="res://Scenes/Maps/map_5.tscn" type="PackedScene" id=7]
[ext_resource path="res://Scenes/Maps/map_6.tscn" type="PackedScene" id=8]
[ext_resource path="res://Scenes/Maps/map_7.tscn" type="PackedScene" id=9]
[ext_resource path="res://Scenes/Maps/map_8.tscn" type="PackedScene" id=10]
[ext_resource path="res://Sprites/Effects/bottom_level_particles.png" type="Texture" id=11]
[ext_resource path="res://Scenes/Menu/life_hud.gd" type="Script" id=12]
[ext_resource path="res://Scenes/Menu/buttons_hud.gd" type="Script" id=13]
[ext_resource path="res://Sprites/GUI/Buttons/bttn_arrow.png" type="Texture" id=14]
[ext_resource path="res://Sprites/GUI/Buttons/bttn_jump.png" type="Texture" id=15]
[ext_resource path="res://Sprites/GUI/Buttons/bttn.png" type="Texture" id=16]
[ext_resource path="res://Sprites/GUI/Buttons/btn_shoot.png" type="Texture" id=17]
[ext_resource path="res://Scenes/Menu/milk_botte_hud.gd" type="Script" id=18]
[ext_resource path="res://Sprites/GUI/HUD/milbar_outter_2.png" type="Texture" id=19]
[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_3.png" type="Texture" id=20]
[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_1.png" type="Texture" id=21]
[ext_resource path="res://Scenes/Menu/cowbells_hud.gd" type="Script" id=22]
[ext_resource path="res://Fonts/pixelated_title.fnt" type="BitmapFont" id=23]
[ext_resource path="res://Sprites/Charasets/cowbell.png" type="Texture" id=24]
[ext_resource path="res://Scenes/Events/cowbell_animation_one_shot.tres" type="Animation" id=25]
[ext_resource path="res://Scenes/Events/cowbell_animations.tres" type="Animation" id=26]
[ext_resource path="res://Scenes/Menu/button_back.tscn" type="PackedScene" id=27]
[ext_resource path="res://Scenes/Menu/in_game_menu.tscn" type="PackedScene" id=28]
[ext_resource path="res://Scenes/Menu/ufo_store.tscn" type="PackedScene" id=29]
[ext_resource path="res://Scenes/Effects/retro_shader.tres" type="CanvasItemMaterial" id=30]
[ext_resource path="res://Sprites/Effects/white.png" type="Texture" id=31]
[sub_resource type="ColorRamp" id=1]
offsets = FloatArray( 0, 1 )
colors = ColorArray( 1, 1, 1, 1, 1, 1, 1, 0 )
[sub_resource type="Environment" id=1]
[sub_resource type="Environment" id=2]
ambient_light/enabled = false
ambient_light/color = Color( 0, 0, 0, 1 )
@ -60,15 +81,42 @@ bcs/contrast = 1.0
bcs/saturation = 1.0
srgb/enabled = false
[sub_resource type="World" id=2]
[sub_resource type="World" id=3]
environment = SubResource( 1 )
environment = SubResource( 2 )
[node name="Node2D" type="Node2D" groups=[
[sub_resource type="CanvasItemMaterial" id=4]
shader/shading_mode = 0
[sub_resource type="GDScript" id=5]
script/source = "extends Button
func _on_Back_pressed():
get_tree().set_pause(true)
get_node(\"in_game_menu\").show()
"
[sub_resource type="GDScript" id=6]
script/source = "extends TextureFrame
# class member variables go here, for example:
# var a = 2
# var b = \"textvar\"
func _ready():
set_hidden(global.retro_effect)
"
[node name="Global" type="Node2D" groups=[
"control",
]]
[node name="Control" type="Control" parent="."]
[node name="Control" type="Control" parent="." groups=[
"level_selector",
]]
focus/ignore_mouse = false
focus/stop_mouse = false
@ -78,63 +126,82 @@ margin/left = 0.0
margin/top = 0.0
margin/right = 1280.0
margin/bottom = 768.0
script/script = ExtResource( 1 )
levels = [ ExtResource( 2 ), ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ) ]
[node name="BotomLevelParticles" type="Particles2D" parent="Control" groups=[
"bottom_level_particles",
]]
visibility/opacity = 0.6
transform/pos = Vector2( 635, 708.804 )
transform/scale = Vector2( 25, 0.3 )
config/amount = 2
config/lifetime = 0.5
config/emitting = false
config/process_mode = 1
config/half_extents = Vector2( 1, 0 )
config/texture = ExtResource( 11 )
params/direction = 180.0
params/spread = 0.0
params/linear_velocity = 500.0
params/spin_velocity = 0.0
params/orbit_velocity = 0.0
params/gravity_direction = 0.0
params/gravity_strength = 0.0
params/radial_accel = 0.0
params/tangential_accel = 0.0
params/damping = 0.0
params/initial_angle = 0.0
params/initial_size = 6.0
params/final_size = 6.0
params/hue_variation = 0.0
params/anim_speed_scale = 0.0
params/anim_initial_pos = 0.0
color/color_ramp = SubResource( 1 )
[node name="Viewport" type="Viewport" parent="Control"]
rect = Rect2( 0, 0, 1280, 768 )
own_world = false
world = SubResource( 2 )
world = SubResource( 3 )
transparent_bg = false
render_target/enabled = false
render_target/v_flip = false
render_target/clear_on_new_frame = true
render_target/clear_on_new_frame = false
render_target/filter = false
render_target/gen_mipmaps = false
render_target/update_mode = 0
render_target/update_mode = 3
audio_listener/enable_2d = true
audio_listener/enable_3d = false
physics/object_picking = false
gui/disable_input = false
[node name="Level" parent="Control/Viewport" instance=ExtResource( 1 )]
[node name="Life" type="Node2D" parent="Control" groups=[
"life_hud",
]]
transform/pos = Vector2( 64, 64 )
script/script = ExtResource( 2 )
[node name="life1" type="Sprite" parent="Control/Life"]
transform/pos = Vector2( 32, 0 )
texture = ExtResource( 3 )
region_rect = Rect2( 180, 140, 145, 150 )
[node name="life2" type="Sprite" parent="Control/Life"]
transform/pos = Vector2( 96, 0 )
texture = ExtResource( 3 )
region_rect = Rect2( 180, 140, 145, 150 )
[node name="life3" type="Sprite" parent="Control/Life"]
transform/pos = Vector2( 160, 0 )
texture = ExtResource( 3 )
region_rect = Rect2( 180, 140, 145, 150 )
transform/pos = Vector2( 120, 58 )
script/script = ExtResource( 12 )
heart_inter_distance = 64
initial_heart_pos = Vector2( 32, 0 )
[node name="Buttons" type="Node2D" parent="Control" groups=[
"onscreen_controls",
"buttons_hud",
]]
script/script = ExtResource( 4 )
editor/display_folded = true
script/script = ExtResource( 13 )
[node name="Bttn_U" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_U" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.9
transform/pos = Vector2( 160, 320 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@ -144,12 +211,14 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_A" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_A" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.8
transform/pos = Vector2( 1088, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 6 )
normal = ExtResource( 15 )
pressed = null
bitmask = null
shape = null
@ -159,12 +228,14 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_AS" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_AS" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.8
transform/pos = Vector2( 1088, 384 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 7 )
normal = ExtResource( 16 )
pressed = null
bitmask = null
shape = null
@ -174,12 +245,14 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_S" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_S" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.9
transform/pos = Vector2( 896, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 8 )
normal = ExtResource( 17 )
pressed = null
bitmask = null
shape = null
@ -189,13 +262,15 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_D" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_D" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.9
transform/pos = Vector2( 288, 704 )
transform/rot = 180.0
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@ -205,43 +280,15 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_DR" type="TouchScreenButton" parent="Control/Buttons"]
visibility/opacity = 0.0
transform/pos = Vector2( 288, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
pressed = null
bitmask = null
shape = null
shape_centered = true
shape_visible = true
passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_DL" type="TouchScreenButton" parent="Control/Buttons"]
visibility/opacity = 0.0
transform/pos = Vector2( 32, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
pressed = null
bitmask = null
shape = null
shape_centered = true
shape_visible = true
passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_R" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_R" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.9
transform/pos = Vector2( 416, 448 )
transform/rot = -90.0
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@ -251,13 +298,15 @@ passby_press = true
action = ""
visibility_mode = 0
[node name="Bttn_L" type="TouchScreenButton" parent="Control/Buttons"]
[node name="Bttn_L" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
]]
visibility/opacity = 0.9
transform/pos = Vector2( 32, 576 )
transform/rot = 90.0
transform/scale = Vector2( 0.474074, 0.481203 )
normal = ExtResource( 5 )
normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@ -271,205 +320,115 @@ visibility_mode = 0
"milk_hud",
]]
editor/display_folded = true
transform/pos = Vector2( 1205, 73 )
transform/scale = Vector2( 2, 2 )
script/script = ExtResource( 9 )
sprite1 = ExtResource( 10 )
sprite2 = ExtResource( 11 )
sprite3 = ExtResource( 12 )
script/script = ExtResource( 18 )
each_bottle_value = 33.0
bottle_inter_distance = 32
initial_bottle_pos = Vector2( -10, -20 )
sprite1 = ExtResource( 19 )
sprite2 = ExtResource( 20 )
sprite3 = ExtResource( 21 )
[node name="Milk_bottle0" type="TextureProgress" parent="Control/Milk_Bar"]
[node name="Cowbells" type="Node2D" parent="Control" groups=[
"cowbell_hud",
]]
editor/display_folded = true
transform/pos = Vector2( 3, 21 )
script/script = ExtResource( 22 )
[node name="Counter" type="RichTextLabel" parent="Control/Cowbells"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 630.0
margin/top = 30.0
margin/right = 876.0
margin/bottom = 81.0
custom_fonts/normal_font = ExtResource( 23 )
bbcode/enabled = true
bbcode/bbcode = "0"
visible_characters = -1
percent_visible = 1.0
[node name="bonus_instancer" type="Node2D" parent="Control/Cowbells"]
transform/pos = Vector2( 642, 43 )
[node name="next_cowbell_timer" type="Timer" parent="Control/Cowbells"]
process_mode = 1
wait_time = 0.6
one_shot = true
autostart = false
[node name="cold_down_timer" type="Timer" parent="Control/Cowbells"]
process_mode = 1
wait_time = 0.005
one_shot = false
autostart = false
[node name="Sprite" type="Sprite" parent="Control/Cowbells"]
material/material = SubResource( 4 )
transform/pos = Vector2( 586, 45 )
transform/scale = Vector2( 3, 3 )
texture = ExtResource( 24 )
hframes = 3
[node name="Animation" type="AnimationPlayer" parent="Control/Cowbells/Sprite"]
playback/process_mode = 0
playback/default_blend_time = 0.0
root/root = NodePath("..")
anims/cowbell_animation_one_shot = ExtResource( 25 )
anims/cowbell_animations = ExtResource( 26 )
playback/active = false
playback/speed = 2.0
blend_times = [ ]
autoplay = ""
[node name="Back" parent="Control" instance=ExtResource( 27 )]
margin/left = 36.0
margin/top = 34.0
margin/right = 97.0
margin/bottom = 89.0
text = "<"
script/script = SubResource( 5 )
[node name="in_game_menu" parent="Control/Back" instance=ExtResource( 28 )]
visibility/visible = false
margin/left = -36.0
margin/top = -34.0
margin/right = 1244.0
margin/bottom = 686.0
[node name="Control" parent="Control" instance=ExtResource( 29 )]
[node name="ScanLine" type="TextureFrame" parent="."]
visibility/opacity = 0.0
visibility/self_opacity = 0.0
material/material = ExtResource( 30 )
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -10.0
margin/top = -20.0
margin/right = 30.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle1" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -42.0
margin/top = -20.0
margin/right = -2.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle2" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -74.0
margin/top = -20.0
margin/right = -34.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle3" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -106.0
margin/top = -20.0
margin/right = -66.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle4" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -138.0
margin/top = -20.0
margin/right = -98.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle5" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -170.0
margin/top = -20.0
margin/right = -130.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle6" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -202.0
margin/top = -20.0
margin/right = -162.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
[node name="Milk_bottle7" type="TextureProgress" parent="Control/Milk_Bar"]
focus/ignore_mouse = false
focus/stop_mouse = false
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = -234.0
margin/top = -20.0
margin/right = -194.0
margin/bottom = 22.0
range/min = 0.0
range/max = 100.0
range/step = 1.0
range/page = 0.0
range/value = 0.0
range/exp_edit = false
range/rounded = false
texture/under = null
texture/over = ExtResource( 10 )
texture/progress = ExtResource( 13 )
mode = 3
radial_fill/fill_degrees = 360.0
radial_fill/center_offset = Vector2( 0, 0 )
margin/left = 0.0
margin/top = 0.0
margin/right = 1280.0
margin/bottom = 718.0
texture = ExtResource( 31 )
modulate = Color( 1, 1, 1, 0 )
expand = true
stretch_mode = 0
script/script = SubResource( 6 )
[connection signal="pressed" from="Control/Buttons/Bttn_U" to="Control/Buttons" method="_on_Bttn_U_pressed"]
@ -491,14 +450,6 @@ radial_fill/center_offset = Vector2( 0, 0 )
[connection signal="released" from="Control/Buttons/Bttn_D" to="Control/Buttons" method="_on_Bttn_D_released"]
[connection signal="pressed" from="Control/Buttons/Bttn_DR" to="Control/Buttons" method="_on_Bttn_DR_pressed"]
[connection signal="released" from="Control/Buttons/Bttn_DR" to="Control/Buttons" method="_on_Bttn_DR_released"]
[connection signal="pressed" from="Control/Buttons/Bttn_DL" to="Control/Buttons" method="_on_Bttn_DL_pressed"]
[connection signal="released" from="Control/Buttons/Bttn_DL" to="Control/Buttons" method="_on_Bttn_DL_released"]
[connection signal="pressed" from="Control/Buttons/Bttn_R" to="Control/Buttons" method="_on_Bttn_R_pressed"]
[connection signal="released" from="Control/Buttons/Bttn_R" to="Control/Buttons" method="_on_Bttn_R_released"]
@ -507,4 +458,10 @@ radial_fill/center_offset = Vector2( 0, 0 )
[connection signal="released" from="Control/Buttons/Bttn_L" to="Control/Buttons" method="_on_Bttn_L_released"]
[connection signal="timeout" from="Control/Cowbells/next_cowbell_timer" to="Control/Cowbells" method="_on_next_cowbell_timer_timeout"]
[connection signal="timeout" from="Control/Cowbells/cold_down_timer" to="Control/Cowbells" method="_on_cold_down_timer_timeout"]
[connection signal="pressed" from="Control/Back" to="Control/Back" method="_on_Back_pressed"]

162
Scenes/Menu/about.tscn Normal file
View file

@ -0,0 +1,162 @@
[gd_scene load_steps=6 format=1]
[ext_resource path="res://Fonts/pixelated_regular.fnt" type="BitmapFont" id=1]
[ext_resource path="res://Sprites/GUI/Buttons/bttn.png" type="Texture" id=2]
[ext_resource path="res://Scenes/Menu/button_back.tscn" type="PackedScene" id=3]
[ext_resource path="res://Scenes/Menu/main_menu.tscn" type="PackedScene" id=4]
[sub_resource type="GDScript" id=1]
script/source = "extends Control
func _ready():
get_node(\"Button\").grab_focus()
"
[node name="Control" type="Control"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 0.0
margin/top = 0.0
margin/right = 40.0
margin/bottom = 40.0
script/script = SubResource( 1 )
[node name="Yanara Panel" type="Panel" parent="."]
anchor/bottom = 1
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 702.0
margin/top = 96.0
margin/right = 1214.0
margin/bottom = -387.0
[node name="RichTextLabel1" type="Label" parent="Yanara Panel"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 37.0
margin/top = 160.0
margin/right = 480.0
margin/bottom = 307.0
custom_fonts/font = ExtResource( 1 )
text = "YANARA_INFO"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Label1" type="Label" parent="Yanara Panel"]
focus/ignore_mouse = true
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 0
margin/left = 66.0
margin/top = 128.0
margin/right = 450.0
margin/bottom = 160.0
custom_fonts/font = ExtResource( 1 )
text = "Yanara Aristiguieta"
align = 1
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Sprite1" type="Sprite" parent="Yanara Panel"]
transform/pos = Vector2( 258, 2.5 )
transform/scale = Vector2( 0.737037, 0.740601 )
texture = ExtResource( 2 )
[node name="Daniel Panel" type="Panel" parent="."]
anchor/bottom = 1
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 74.0
margin/top = 96.0
margin/right = 586.0
margin/bottom = -387.0
[node name="RichTextLabel1" type="Label" parent="Daniel Panel"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 33.0
margin/top = 160.0
margin/right = 481.0
margin/bottom = 307.0
custom_fonts/font = ExtResource( 1 )
text = "DANIEL_INFO"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Label1" type="Label" parent="Daniel Panel"]
focus/ignore_mouse = true
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 0
margin/left = 66.0
margin/top = 128.0
margin/right = 450.0
margin/bottom = 160.0
custom_fonts/font = ExtResource( 1 )
text = "Daniel Darias"
align = 1
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
[node name="Sprite1" type="Sprite" parent="Daniel Panel"]
transform/pos = Vector2( 258, 2.5 )
transform/scale = Vector2( 0.737037, 0.740601 )
texture = ExtResource( 2 )
[node name="Button" parent="." instance=ExtResource( 3 )]
scene = ExtResource( 4 )
[node name="Panel 2" type="Panel" parent="."]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 74.0
margin/top = 438.0
margin/right = 1215.0
margin/bottom = 643.0
[node name="Label" type="Label" parent="Panel 2"]
focus/ignore_mouse = true
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 0
margin/left = 10.0
margin/top = 11.0
margin/right = 1128.0
margin/bottom = 192.0
custom_fonts/font = ExtResource( 1 )
text = "TEXT_LICENSE"
autowrap = true
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1

View file

@ -0,0 +1,4 @@
extends Button
func _on_info_button_pressed():
get_tree().change_scene("res://Scenes/Menu/about.tscn")

View file

@ -0,0 +1,7 @@
extends Button
export(PackedScene) var scene
func _on_Button_pressed():
#get_tree().change_scene_to(scene)
get_parent().get_node("in_game_menu").set_visible(true)

View file

@ -0,0 +1,15 @@
extends Button
export(PackedScene) var scene
func _ready():
set_process_input(true)
func _on_Button_pressed():
global.save_game()
get_tree().set_pause(false)
get_tree().change_scene_to(scene)
func _input(ev):
if (ev.is_action_pressed("ui_cancel")):
_on_Button_pressed()

View file

@ -1,5 +1,7 @@
extends Button
func _on_Button_pressed():
global.level = "res://Scenes/Menu/HUD.tscn"
get_tree().change_scene("res://Scenes/Menu/HUD.tscn")
func _ready():
grab_focus()
func _on_Button_pressed():
get_tree().change_scene("res://Scenes/Menu/level_selector.tscn")

View file

@ -0,0 +1,27 @@
[gd_scene load_steps=3 format=1]
[ext_resource path="res://Fonts/pixelated_title.fnt" type="BitmapFont" id=1]
[ext_resource path="res://Scenes/Menu/back_button.gd" type="Script" id=2]
[node name="Button" type="Button"]
focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
margin/left = 524.0
margin/top = 648.0
margin/right = 742.0
margin/bottom = 696.0
custom_fonts/font = ExtResource( 1 )
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
text = "BTTN_BACK"
flat = false
script/script = ExtResource( 2 )
scene = null
[connection signal="pressed" from="." to="." method="_on_Button_pressed"]

20
Scenes/Menu/buy_heart.gd Normal file
View file

@ -0,0 +1,20 @@
extends Button
var price = 0
func _ready():
update_price()
func update_price():
price = global.base_price_heart * max(global.increment_price_heart * global.hearts_buyed, 1)
get_node("Heart_Label").set_text(str(price))
if (price < global.saved_cowbells):
set_disabled(false)
else:
set_disabled(true)
func _on_Heart_button_pressed():
global.buy_heart(price)
update_price()
get_parent().get_node("Milk_button").update_price()

19
Scenes/Menu/buy_milk.gd Normal file
View file

@ -0,0 +1,19 @@
extends Button
var price = 0
func _ready():
update_price()
func update_price():
price = global.base_price_milk * max(global.increment_price_milk * global.milk_buyed, 1)
get_node("Milk_Label").set_text(str(price))
if (price < global.saved_cowbells):
set_disabled(false)
else:
set_disabled(true)
func _on_Milk_button_pressed():
global.buy_milk(price)
update_price()
get_parent().get_node("Heart_button").update_price()

View file

@ -0,0 +1,47 @@
extends Node2D
const BONUS = preload("res://Scenes/Events/cowbell_bonus.tscn")
onready var label = get_node("Counter")
onready var animation = get_node("Sprite/Animation")
onready var next_cowbell_timer = get_node("next_cowbell_timer")
onready var cold_down_timer = get_node("cold_down_timer")
onready var sprite = get_node("Sprite")
onready var base_modulation = Color(1,1,1)
onready var instancer = get_node("bonus_instancer")
var frame_number
func reset_values():
set_counter(global.saved_cowbells, 0)
func bonus(quantity):
var bonus = BONUS.instance()
bonus.set_text(str("+",quantity))
instancer.add_child(bonus)
func _ready():
animation.play("cowbell_animations")
var anim = animation.get_animation("cowbell_animations")
next_cowbell_timer.set_wait_time(anim.get_length() / animation.get_speed() )
set_counter(global.cowbells, 0)
animation.set_active(false)
func set_counter (var quantity, var acumulated):
sprite.set_modulate(Color (1,1 - acumulated * 2,1 - acumulated * 2))
label.set_bbcode(" " + String(quantity))
animation.set_active(true)
next_cowbell_timer.start()
cold_down_timer.start()
func _on_next_cowbell_timer_timeout():
sprite.set_frame(0)
animation.set_active(false)
func _on_cold_down_timer_timeout():
var current_modulation = sprite.get_modulate()
if (current_modulation.g >= base_modulation.g && current_modulation.b >= base_modulation.b):
sprite.set_modulate(base_modulation)
cold_down_timer.stop()
else:
sprite.set_modulate(Color (1,current_modulation.g + 0.02 ,current_modulation.b + 0.02))

View file

@ -1,18 +1,14 @@
extends Node2D
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
get_node("VButtonArray/reset").grab_focus()
pass
func _on_reset_pressed():
global.release_all()
get_tree().change_scene(global.level)
get_tree().change_scene("res://Scenes/Menu/HUD.tscn")
queue_free()
func _on_main_menu_pressed():
get_tree().change_scene("res://menu.tscn")
get_tree().change_scene("res://Scenes/Menu/main_menu.tscn")
queue_free()

Some files were not shown because too many files have changed in this diff Show more