+
+
+
> 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.
@@ -16,7 +22,7 @@ Code licensed as [GPL v3](LICENSE_CODE), assets as [Creative Commons Attribution
## Authors
- **Daniel Darias Sánchez** [mastodon](https://mastodon.social/@darias), [email](dariasteam94@gmail.com)
- code, music, sprites, aniamtions
+ code, music, sprites, animations
- **Yanara Aristiguieta** [instagram](https://www.instagram.com/yanaronna/), [twitter](twitter.com/yanaronna), [email](needafreefall-@hotmail.com)
sprites, character design, animations
diff --git a/Scenes/ERASE_ME.tscn b/Scenes/ERASE_ME.tscn
deleted file mode 100644
index 03aacde..0000000
--- a/Scenes/ERASE_ME.tscn
+++ /dev/null
@@ -1,15 +0,0 @@
-[gd_scene load_steps=2 format=1]
-
-[ext_resource path="res://Scenes/Events/chain.tscn" type="PackedScene" id=1]
-
-[node name="Node2D" type="Node2D"]
-
-transform/scale = Vector2( 2, 2 )
-
-[node name="Node2D" parent="." instance=ExtResource( 1 )]
-
-transform/pos = Vector2( 482.349, 310.512 )
-START = null
-END = null
-
-
diff --git a/Scenes/Effects/retro_shader.tres b/Scenes/Effects/retro_shader.tres
new file mode 100644
index 0000000..bfdef7d
--- /dev/null
+++ b/Scenes/Effects/retro_shader.tres
@@ -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
+
diff --git a/Scenes/Events/BottomLevelParticles.tscn b/Scenes/Events/BottomLevelParticles.tscn
new file mode 100644
index 0000000..40c0604
--- /dev/null
+++ b/Scenes/Events/BottomLevelParticles.tscn
@@ -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 )
+
+
diff --git a/Scenes/Events/death_line.gd b/Scenes/Events/death_line.gd
index 2bf1bc3..df41510 100644
--- a/Scenes/Events/death_line.gd
+++ b/Scenes/Events/death_line.gd
@@ -1,7 +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)
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)
diff --git a/Scenes/Events/death_line.tscn b/Scenes/Events/death_line.tscn
index 31133f0..bdaa9fc 100644
--- a/Scenes/Events/death_line.tscn
+++ b/Scenes/Events/death_line.tscn
@@ -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"]
diff --git a/Scenes/Events/player.tscn b/Scenes/Events/player.tscn
index e76baef..b7ea16e 100644
--- a/Scenes/Events/player.tscn
+++ b/Scenes/Events/player.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=12 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]
@@ -9,19 +9,18 @@
[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.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="ConvexPolygonShape2D" id=2]
+[sub_resource type="ConvexPolygonShape2D" id=6]
custom_solver_bias = 0.0
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="Animation" id=3]
+[sub_resource type="Animation" id=4]
-resource/name = "idle"
length = 0.6
loop = true
step = 0.1
@@ -36,16 +35,21 @@ tracks/0/keys = {
"values": [ 0, 1, 2, 3, 2, 1 ]
}
+[sub_resource type="RectangleShape2D" id=3]
+
+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( 1 )
+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/shape = SubResource( 6 )
shapes/1/transform = Matrix32( 1.89755, 0, 0, 3.10364, 2.93931, -4.91934 )
shapes/1/trigger = true
collision/layers = 1057
@@ -110,7 +114,7 @@ region_rect = Rect2( 0, 0, 96, 96 )
playback/process_mode = 0
playback/default_blend_time = 0.2
root/root = NodePath("..")
-anims/idle = SubResource( 3 )
+anims/idle = SubResource( 4 )
anims/walk = ExtResource( 5 )
playback/active = true
playback/speed = 1.0
@@ -169,6 +173,30 @@ 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"]
[connection signal="looking_right" from="." to="shooter" method="_on_KinematicBody2D_looking_right"]
diff --git a/Scenes/Maps/map_1.tscn b/Scenes/Maps/map_1.tscn
index b3ad932..605c420 100644
--- a/Scenes/Maps/map_1.tscn
+++ b/Scenes/Maps/map_1.tscn
@@ -1567,8 +1567,6 @@ script/script = ExtResource( 13 )
[node name="Cages" type="Node2D" parent="."]
-editor/display_folded = true
-
[node name="jail" parent="Cages" instance=ExtResource( 14 )]
transform/pos = Vector2( -1250, -2410 )
diff --git a/Scenes/Menu/HUD.tscn b/Scenes/Menu/HUD.tscn
index e6d0c2c..400fe78 100644
--- a/Scenes/Menu/HUD.tscn
+++ b/Scenes/Menu/HUD.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=35 format=1]
+[gd_scene load_steps=38 format=1]
[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]
@@ -10,27 +10,34 @@
[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://Scenes/Menu/life_hud.gd" type="Script" id=11]
-[ext_resource path="res://Scenes/Menu/buttons_hud.gd" type="Script" id=12]
-[ext_resource path="res://Sprites/GUI/Buttons/bttn_arrow.png" type="Texture" id=13]
-[ext_resource path="res://Sprites/GUI/Buttons/bttn_jump.png" type="Texture" id=14]
-[ext_resource path="res://Sprites/GUI/Buttons/bttn.png" type="Texture" id=15]
-[ext_resource path="res://Sprites/GUI/Buttons/btn_shoot.png" type="Texture" id=16]
-[ext_resource path="res://Scenes/Menu/milk_botte_hud.gd" type="Script" id=17]
-[ext_resource path="res://Sprites/GUI/HUD/milbar_outter_2.png" type="Texture" id=18]
-[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_3.png" type="Texture" id=19]
-[ext_resource path="res://Sprites/GUI/HUD/milkbar_outter_1.png" type="Texture" id=20]
-[ext_resource path="res://Scenes/Menu/cowbells_hud.gd" type="Script" id=21]
-[ext_resource path="res://Fonts/pixelated_title.fnt" type="BitmapFont" id=22]
-[ext_resource path="res://Sprites/Charasets/cowbell.png" type="Texture" id=23]
-[ext_resource path="res://Scenes/Events/cowbell_animation_one_shot.tres" type="Animation" id=24]
-[ext_resource path="res://Scenes/Events/cowbell_animations.tres" type="Animation" id=25]
-[ext_resource path="res://Scenes/Menu/button_back.tscn" type="PackedScene" id=26]
-[ext_resource path="res://Scenes/Menu/in_game_menu.tscn" type="PackedScene" id=27]
-[ext_resource path="res://Scenes/Menu/ufo_store.tscn" type="PackedScene" id=28]
-[ext_resource path="res://Scenes/Effects/scan_lines.tscn" type="PackedScene" id=29]
+[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="Environment" id=1]
+[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=2]
ambient_light/enabled = false
ambient_light/color = Color( 0, 0, 0, 1 )
@@ -74,15 +81,15 @@ 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 )
-[sub_resource type="CanvasItemMaterial" id=3]
+[sub_resource type="CanvasItemMaterial" id=4]
shader/shading_mode = 0
-[sub_resource type="GDScript" id=4]
+[sub_resource type="GDScript" id=5]
script/source = "extends Button
@@ -91,7 +98,7 @@ func _on_Back_pressed():
get_node(\"in_game_menu\").show()
"
-[sub_resource type="GDScript" id=5]
+[sub_resource type="GDScript" id=6]
script/source = "extends TextureFrame
@@ -122,11 +129,42 @@ 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
@@ -144,7 +182,7 @@ gui/disable_input = false
]]
transform/pos = Vector2( 120, 58 )
-script/script = ExtResource( 11 )
+script/script = ExtResource( 12 )
heart_inter_distance = 64
initial_heart_pos = Vector2( 32, 0 )
@@ -154,7 +192,7 @@ initial_heart_pos = Vector2( 32, 0 )
]]
editor/display_folded = true
-script/script = ExtResource( 12 )
+script/script = ExtResource( 13 )
[node name="Bttn_U" type="TouchScreenButton" parent="Control/Buttons" groups=[
"onscreen_controls",
@@ -163,7 +201,7 @@ script/script = ExtResource( 12 )
visibility/opacity = 0.9
transform/pos = Vector2( 160, 320 )
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 13 )
+normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@@ -180,7 +218,7 @@ visibility_mode = 0
visibility/opacity = 0.8
transform/pos = Vector2( 1088, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 14 )
+normal = ExtResource( 15 )
pressed = null
bitmask = null
shape = null
@@ -197,7 +235,7 @@ visibility_mode = 0
visibility/opacity = 0.8
transform/pos = Vector2( 1088, 384 )
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 15 )
+normal = ExtResource( 16 )
pressed = null
bitmask = null
shape = null
@@ -214,7 +252,7 @@ visibility_mode = 0
visibility/opacity = 0.9
transform/pos = Vector2( 896, 576 )
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 16 )
+normal = ExtResource( 17 )
pressed = null
bitmask = null
shape = null
@@ -232,7 +270,7 @@ visibility/opacity = 0.9
transform/pos = Vector2( 288, 704 )
transform/rot = 180.0
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 13 )
+normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@@ -250,7 +288,7 @@ visibility/opacity = 0.9
transform/pos = Vector2( 416, 448 )
transform/rot = -90.0
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 13 )
+normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@@ -268,7 +306,7 @@ visibility/opacity = 0.9
transform/pos = Vector2( 32, 576 )
transform/rot = 90.0
transform/scale = Vector2( 0.474074, 0.481203 )
-normal = ExtResource( 13 )
+normal = ExtResource( 14 )
pressed = null
bitmask = null
shape = null
@@ -284,13 +322,13 @@ visibility_mode = 0
transform/pos = Vector2( 1205, 73 )
transform/scale = Vector2( 2, 2 )
-script/script = ExtResource( 17 )
+script/script = ExtResource( 18 )
each_bottle_value = 33.0
bottle_inter_distance = 32
initial_bottle_pos = Vector2( -10, -20 )
-sprite1 = ExtResource( 18 )
-sprite2 = ExtResource( 19 )
-sprite3 = ExtResource( 20 )
+sprite1 = ExtResource( 19 )
+sprite2 = ExtResource( 20 )
+sprite3 = ExtResource( 21 )
[node name="Cowbells" type="Node2D" parent="Control" groups=[
"cowbell_hud",
@@ -298,7 +336,7 @@ sprite3 = ExtResource( 20 )
editor/display_folded = true
transform/pos = Vector2( 3, 21 )
-script/script = ExtResource( 21 )
+script/script = ExtResource( 22 )
[node name="Counter" type="RichTextLabel" parent="Control/Cowbells"]
@@ -310,7 +348,7 @@ margin/left = 630.0
margin/top = 30.0
margin/right = 876.0
margin/bottom = 81.0
-custom_fonts/normal_font = ExtResource( 22 )
+custom_fonts/normal_font = ExtResource( 23 )
bbcode/enabled = true
bbcode/bbcode = "0"
visible_characters = -1
@@ -336,10 +374,10 @@ autostart = false
[node name="Sprite" type="Sprite" parent="Control/Cowbells"]
-material/material = SubResource( 3 )
+material/material = SubResource( 4 )
transform/pos = Vector2( 586, 45 )
transform/scale = Vector2( 3, 3 )
-texture = ExtResource( 23 )
+texture = ExtResource( 24 )
hframes = 3
[node name="Animation" type="AnimationPlayer" parent="Control/Cowbells/Sprite"]
@@ -347,23 +385,23 @@ hframes = 3
playback/process_mode = 0
playback/default_blend_time = 0.0
root/root = NodePath("..")
-anims/cowbell_animation_one_shot = ExtResource( 24 )
-anims/cowbell_animations = ExtResource( 25 )
+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( 26 )]
+[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( 4 )
+script/script = SubResource( 5 )
-[node name="in_game_menu" parent="Control/Back" instance=ExtResource( 27 )]
+[node name="in_game_menu" parent="Control/Back" instance=ExtResource( 28 )]
visibility/visible = false
margin/left = -36.0
@@ -371,11 +409,26 @@ margin/top = -34.0
margin/right = 1244.0
margin/bottom = 686.0
-[node name="Control" parent="Control" instance=ExtResource( 28 )]
+[node name="Control" parent="Control" instance=ExtResource( 29 )]
-[node name="ScanLine" parent="." instance=ExtResource( 29 )]
+[node name="ScanLine" type="TextureFrame" parent="."]
-script/script = SubResource( 5 )
+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 = 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"]
diff --git a/Scenes/Menu/back_button.gd b/Scenes/Menu/back_button.gd
index 3ea10f3..08085bf 100644
--- a/Scenes/Menu/back_button.gd
+++ b/Scenes/Menu/back_button.gd
@@ -5,8 +5,9 @@ export(PackedScene) var scene
func _ready():
set_process_input(true)
-func _on_Button_pressed():
- get_tree().set_pause(false)
+func _on_Button_pressed():
+ global.save_game()
+ get_tree().set_pause(false)
get_tree().change_scene_to(scene)
func _input(ev):
diff --git a/Scenes/Menu/global.gd b/Scenes/Menu/global.gd
index de64cd4..ada92f1 100644
--- a/Scenes/Menu/global.gd
+++ b/Scenes/Menu/global.gd
@@ -15,6 +15,7 @@ var can_show_in_game_menu = true
var retro_effect = true
var music = true
var sound = true
+var bottom_particles = false
var level = 0
var unlocked_levels = 1
@@ -81,7 +82,8 @@ func save_game():
retro_effect=retro_effect,
# NEW STUFF
sound=sound,
- music=music
+ music=music,
+ bottom_particles=bottom_particles
}
save_game.store_line(data.to_json())
save_game.close()
@@ -100,7 +102,7 @@ func load_game():
onscreen_controls = current_line["onscreen_controls"]
cowbells = current_line["saved_cowbells"]
saved_cowbells = cowbells
-
+
max_milk = current_line["max_milk"]
max_life = current_line["max_life"]
life = current_line["life"]
@@ -112,4 +114,7 @@ func load_game():
if (current_line.has("sound")):
sound = current_line["sound"]
music = current_line["music"]
+
+ if (current_line.has("bottom_particles")):
+ bottom_particles = current_line["bottom_particles"]
\ No newline at end of file
diff --git a/Scenes/Menu/level_selector.gd b/Scenes/Menu/level_selector.gd
index 7e7af52..1daffeb 100644
--- a/Scenes/Menu/level_selector.gd
+++ b/Scenes/Menu/level_selector.gd
@@ -19,7 +19,8 @@ func _ready():
func next_level():
if (global.level < levels.size()):
global.level += 1
- global.unlocked_levels += 1
+ if (global.level >= global.unlocked_levels):
+ global.unlocked_levels += 1
global.save_game()
viewport.get_child(0).queue_free()
#reset_hud()
diff --git a/Scenes/Menu/main_menu.tscn b/Scenes/Menu/main_menu.tscn
index 6769f7d..30fe143 100644
--- a/Scenes/Menu/main_menu.tscn
+++ b/Scenes/Menu/main_menu.tscn
@@ -1,14 +1,15 @@
-[gd_scene load_steps=11 format=1]
+[gd_scene load_steps=12 format=1]
[ext_resource path="res://Sprites/GUI/Buttons/btn_shoot.png" type="Texture" id=1]
[ext_resource path="res://Fonts/pixelated_title.fnt" type="BitmapFont" id=2]
-[ext_resource path="res://Scenes/Menu/bttn_play.gd" type="Script" id=3]
-[ext_resource path="res://Scenes/Menu/about_button.gd" type="Script" id=4]
-[ext_resource path="res://Music/dangerous_hills.ogg" type="AudioStream" id=5]
-[ext_resource path="res://Scenes/Events/music.gd" type="Script" id=6]
-[ext_resource path="res://Sprites/GUI/title_base.png" type="Texture" id=7]
-[ext_resource path="res://Sprites/GUI/title_revenge.png" type="Texture" id=8]
-[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=9]
+[ext_resource path="res://Scenes/Menu/back_button.gd" type="Script" id=3]
+[ext_resource path="res://Scenes/Menu/bttn_play.gd" type="Script" id=4]
+[ext_resource path="res://Scenes/Menu/about_button.gd" type="Script" id=5]
+[ext_resource path="res://Music/dangerous_hills.ogg" type="AudioStream" id=6]
+[ext_resource path="res://Scenes/Events/music.gd" type="Script" id=7]
+[ext_resource path="res://Sprites/GUI/title_base.png" type="Texture" id=8]
+[ext_resource path="res://Sprites/GUI/title_revenge.png" type="Texture" id=9]
+[ext_resource path="res://Sprites/Effects/leche.png" type="Texture" id=10]
[sub_resource type="GDScript" id=1]
@@ -36,8 +37,8 @@ focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
-margin/left = -13.0
-margin/top = -2.0
+margin/left = -31.0
+margin/top = -31.0
margin/right = 16.0
margin/bottom = 23.0
flat = false
@@ -45,6 +46,26 @@ button/count = 0
button/min_button_size = -1.0
button/align = 1065353216
+[node name="Button" type="Button" parent="VButtonArray"]
+
+rect/scale = Vector2( 0.06, 0.1 )
+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 = 42.0
+margin/bottom = 37.0
+custom_fonts/font = ExtResource( 2 )
+toggle_mode = false
+enabled_focus_mode = 2
+shortcut = null
+text = "<"
+flat = false
+script/script = ExtResource( 3 )
+scene = null
+
[node name="play_button" type="Button" parent="VButtonArray"]
anchor/top = 3
@@ -55,17 +76,17 @@ focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
-margin/left = 1.90735e-06
-margin/top = 12.5
-margin/right = 290.0
-margin/bottom = -35.5
+margin/left = 18.0
+margin/top = -2.0
+margin/right = 308.0
+margin/bottom = -50.0
custom_fonts/font = ExtResource( 2 )
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
text = "PLAY_GAME"
flat = false
-script/script = ExtResource( 3 )
+script/script = ExtResource( 4 )
[node name="settings_button" type="Button" parent="VButtonArray"]
@@ -78,10 +99,10 @@ focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
-margin/left = 14.5
-margin/top = 3.5
-margin/right = -274.5
-margin/bottom = -44.5
+margin/left = 5.5
+margin/top = -11.0
+margin/right = -283.5
+margin/bottom = -59.0
custom_fonts/font = ExtResource( 2 )
toggle_mode = false
enabled_focus_mode = 2
@@ -101,23 +122,23 @@ focus/ignore_mouse = false
focus/stop_mouse = true
size_flags/horizontal = 2
size_flags/vertical = 2
-margin/left = 14.5
-margin/top = -5.5
-margin/right = -274.5
-margin/bottom = -53.5
+margin/left = 5.5
+margin/top = -20.0
+margin/right = -283.5
+margin/bottom = -68.0
custom_fonts/font = ExtResource( 2 )
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
text = "ABOUT"
flat = false
-script/script = ExtResource( 4 )
+script/script = ExtResource( 5 )
[node name="StreamPlayer" type="StreamPlayer" parent="." groups=[
"music",
]]
-stream/stream = ExtResource( 5 )
+stream/stream = ExtResource( 6 )
stream/play = false
stream/loop = false
stream/volume_db = 5.0
@@ -125,20 +146,20 @@ stream/autoplay = false
stream/paused = false
stream/loop_restart_time = 0.0
stream/buffering_ms = 500
-script/script = ExtResource( 6 )
+script/script = ExtResource( 7 )
[node name="Base" type="Sprite" parent="."]
transform/pos = Vector2( 1.07855, -1.84071 )
transform/scale = Vector2( 0.0864583, 0.128739 )
z/z = -1
-texture = ExtResource( 7 )
+texture = ExtResource( 8 )
[node name="Revenge" type="Sprite" parent="."]
transform/pos = Vector2( 1.87856, -1.84071 )
transform/scale = Vector2( 0.0864583, 0.128739 )
-texture = ExtResource( 8 )
+texture = ExtResource( 9 )
[node name="Particles2D" type="Particles2D" parent="."]
@@ -151,7 +172,7 @@ config/amount = 8
config/lifetime = 2.5
config/preprocess = 1.0
config/process_mode = 1
-config/texture = ExtResource( 9 )
+config/texture = ExtResource( 10 )
params/direction = 0.0
params/spread = 1.0
params/linear_velocity = 500.0
@@ -183,7 +204,7 @@ config/amount = 8
config/lifetime = 2.5
config/preprocess = 1.0
config/process_mode = 1
-config/texture = ExtResource( 9 )
+config/texture = ExtResource( 10 )
params/direction = 0.0
params/spread = 1.0
params/linear_velocity = 500.0
@@ -215,7 +236,7 @@ config/amount = 6
config/lifetime = 2.5
config/preprocess = 1.0
config/process_mode = 1
-config/texture = ExtResource( 9 )
+config/texture = ExtResource( 10 )
params/direction = 0.0
params/spread = 1.0
params/linear_velocity = 500.0
@@ -247,7 +268,7 @@ config/amount = 6
config/lifetime = 2.5
config/preprocess = 1.0
config/process_mode = 1
-config/texture = ExtResource( 9 )
+config/texture = ExtResource( 10 )
params/direction = 0.0
params/spread = 1.0
params/linear_velocity = 500.0
@@ -268,6 +289,8 @@ randomness/spread = 10.0
randomness/linear_velocity = 0.5
color/color = Color( 0.851562, 0.459045, 0.83623, 1 )
+[connection signal="pressed" from="VButtonArray/Button" to="VButtonArray/Button" method="_on_Button_pressed"]
+
[connection signal="pressed" from="VButtonArray/play_button" to="VButtonArray/play_button" method="_on_Button_pressed"]
[connection signal="pressed" from="VButtonArray/settings_button" to="VButtonArray/settings_button" method="_on_settings_button_pressed"]
diff --git a/Scenes/Menu/settings.tscn b/Scenes/Menu/settings.tscn
index b15c844..f19de1e 100644
--- a/Scenes/Menu/settings.tscn
+++ b/Scenes/Menu/settings.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=9 format=1]
+[gd_scene load_steps=10 format=1]
[ext_resource path="res://Fonts/pixelated_regular.fnt" type="BitmapFont" id=1]
[ext_resource path="res://Scenes/Menu/button_back.tscn" type="PackedScene" id=2]
@@ -57,6 +57,18 @@ func _ready():
func _on_CheckButton3_toggled( pressed ):
global.sound = !global.sound"
+[sub_resource type="GDScript" id=5]
+
+script/source = "extends CheckButton
+
+func _ready():
+ set_pressed(global.bottom_particles)
+
+func _on_CheckButton4_toggled( pressed ):
+ global.bottom_particles = !global.bottom_particles
+
+"
+
[node name="Control" type="Control"]
focus/ignore_mouse = false
@@ -179,6 +191,26 @@ flat = false
align = 0
script/script = SubResource( 4 )
+[node name="CheckButton4" type="CheckButton" parent="Panel/VBoxContainer"]
+
+rect/min_size = Vector2( 0, 30 )
+focus/ignore_mouse = false
+focus/stop_mouse = true
+size_flags/horizontal = 2
+size_flags/vertical = 2
+margin/left = 0.0
+margin/top = 136.0
+margin/right = 486.0
+margin/bottom = 166.0
+custom_fonts/font = ExtResource( 1 )
+toggle_mode = true
+enabled_focus_mode = 2
+shortcut = null
+text = "SWITCH_BOTTOM_PARTICLES"
+flat = false
+align = 0
+script/script = SubResource( 5 )
+
[node name="VButtonArray" type="VButtonArray" parent="Panel"]
focus/ignore_mouse = false
@@ -228,4 +260,6 @@ max_lines_visible = -1
[connection signal="toggled" from="Panel/VBoxContainer/CheckButton3" to="Panel/VBoxContainer/CheckButton3" method="_on_CheckButton3_toggled"]
+[connection signal="toggled" from="Panel/VBoxContainer/CheckButton4" to="Panel/VBoxContainer/CheckButton4" method="_on_CheckButton4_toggled"]
+
diff --git a/Scenes/Menu/ufo_store.tscn b/Scenes/Menu/ufo_store.tscn
index 3b397e1..e5ea974 100644
--- a/Scenes/Menu/ufo_store.tscn
+++ b/Scenes/Menu/ufo_store.tscn
@@ -60,7 +60,7 @@ margin/top = -19.0
margin/right = 414.0
margin/bottom = 20.0
custom_fonts/font = ExtResource( 2 )
-text = "UFO Store"
+text = "UFO_STORE"
percent_visible = 1.0
lines_skipped = 0
max_lines_visible = -1
diff --git a/Sprites/Effects/bottom_level_particles.png b/Sprites/Effects/bottom_level_particles.png
new file mode 100644
index 0000000..e92fae4
Binary files /dev/null and b/Sprites/Effects/bottom_level_particles.png differ
diff --git a/Sprites/Effects/bottom_level_particles.png.flags b/Sprites/Effects/bottom_level_particles.png.flags
new file mode 100644
index 0000000..d5476d5
--- /dev/null
+++ b/Sprites/Effects/bottom_level_particles.png.flags
@@ -0,0 +1 @@
+repeat=true
diff --git a/Sprites/Effects/white.png b/Sprites/Effects/white.png
new file mode 100644
index 0000000..86d7c58
Binary files /dev/null and b/Sprites/Effects/white.png differ
diff --git a/engine.cfg b/engine.cfg
index 80f3538..bcc0657 100644
--- a/engine.cfg
+++ b/engine.cfg
@@ -1,6 +1,6 @@
[application]
-name="Cow's Revenge"
+name="CowsRevenge"
main_scene="res://Scenes/Menu/main_menu.tscn"
icon="res://high_res_icon.png"
@@ -14,7 +14,6 @@ force_fps=60
[display]
-use_vsync=true
stretch_mode="viewport"
use_2d_pixel_snap=true
width=1280
@@ -50,7 +49,7 @@ ui_jump=[key(A), key(Space), jbutton(0, 0)]
[locale]
-translations=["res://Locales/locales.xl", "res://Locales/locales.es.xl", "res://Locales/locales.en.xl"]
+translations=["res://Locales/locales.es.xl", "res://Locales/locales.en.xl", "res://Locales/locales.de.xl"]
[physics]
diff --git a/export.cfg b/export.cfg
index f98f8df..69eccbc 100644
--- a/export.cfg
+++ b/export.cfg
@@ -19,6 +19,7 @@ convert_text_scenes=true
filter=""
filter_exclude=""
+filter_exclude_dir=""
type="resources"
[platform:Android]
@@ -27,14 +28,15 @@ apk_expansion/SALT=""
apk_expansion/enable=false
apk_expansion/public_key=""
architecture/arm=true
+architecture/arm64=false
architecture/x86=false
command_line/extra_args=""
custom_package/debug=""
custom_package/release=""
debug/debugging_enabled=false
keystore/release="/home/darias/release.keystore"
-keystore/release_password="cualquierboberia"
-keystore/release_user="pipoypipagames"
+keystore/release_password="a"
+keystore/release_user="a"
one_click_deploy/clear_previous_install=false
package/icon="res://high_res_icon.png"
package/name="Cow's Revenge"
@@ -212,8 +214,8 @@ user_permissions/6=""
user_permissions/7=""
user_permissions/8=""
user_permissions/9=""
-version/code=6
-version/name="1.0.4"
+version/code=9
+version/name="1.0.5"
[platform:BlackBerry 10]
@@ -259,9 +261,9 @@ application/icon="res://high_res_icon.png"
application/identifier="org.godotengine.macgame"
application/info="Made with Godot Engine"
application/name=""
-application/short_version="1.0.3"
+application/short_version="1.0.5"
application/signature="godotmacgame"
-application/version="1.0.3"
+application/version="1.0.5"
codesign/entitlements=""
codesign/identity=""
custom_package/debug=""
diff --git a/f-droid/src/main/play/en/whatsnew b/f-droid/src/main/play/en/whatsnew
index 2b5fd6a..0308c13 100644
--- a/f-droid/src/main/play/en/whatsnew
+++ b/f-droid/src/main/play/en/whatsnew
@@ -1 +1,5 @@
-First F-Droid Release
+- Toggle music / sound in settings menu
+- Gamepad improvements(thanks to contributor basxto):
+ - Add Going back in menues with B
+ - Additionally shooting with triggers
+ - Changing weapons with shoulder buttons
diff --git a/f-droid/src/main/play/es/whatsnew b/f-droid/src/main/play/es/whatsnew
index cd7679d..9b3c4e1 100644
--- a/f-droid/src/main/play/es/whatsnew
+++ b/f-droid/src/main/play/es/whatsnew
@@ -1,2 +1,5 @@
-Primera versión en F-Droid
-
+- Activa o desactiva la música y los sonidos en el menú principal
+- Mejoras en el soporte de mando (contribución de Basxto)
+ - Botón B para vovler atrás en los menús
+ - DIsparo con los gatillos
+ - Cambio de arma con los bumpers
diff --git a/linux_build/com.github.dariasteam.cowsrevenge.appdata.xml b/linux_build/com.github.dariasteam.cowsrevenge.appdata.xml
index 85b2c64..ea30c16 100644
--- a/linux_build/com.github.dariasteam.cowsrevenge.appdata.xml
+++ b/linux_build/com.github.dariasteam.cowsrevenge.appdata.xml
@@ -68,14 +68,18 @@
- First packaged linux release featuring 8 playable levels and - gamepad support. + - Allow mute sound and music + - Add partial German translation (thanks to Basxto) + - Better gamepad support + - Minor bugfixes and improvements
- Primera versión linux empaquetada, ofrece 8 niveles jugables - y soporte para mandos. + - Añade la opción de desactivar el sonido y la música + - Añade soporte parcial para Alemán (Contribución de Basxto) + - Soporte para mando mejorado + - Correciones y mejoras menores