diff --git a/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3 b/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3 new file mode 100644 index 0000000..3388cf4 Binary files /dev/null and b/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3 differ diff --git a/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3.import b/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3.import new file mode 100644 index 0000000..173f82e --- /dev/null +++ b/assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://dwr53ucg07nla" +path="res://.godot/imported/Oliver Buckland - Dead God Graveyard .mp3-22cfd929c244fa24654efd56bbc029db.mp3str" + +[deps] + +source_file="res://assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3" +dest_files=["res://.godot/imported/Oliver Buckland - Dead God Graveyard .mp3-22cfd929c244fa24654efd56bbc029db.mp3str"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/assets/shaders/SACRIFICE.gdshader b/assets/shaders/SACRIFICE.gdshader new file mode 100644 index 0000000..3946bef --- /dev/null +++ b/assets/shaders/SACRIFICE.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform sampler2D noise; + +float rng(vec2 st) +{ + return fract(sin(dot(st,vec2(16.125125,61.2155215125)))*12512.0); +} + +void fragment() { + float capped_time = (sin(TIME/4.0) + 1.0); + if (abs(UV.x + UV.y - capped_time) < 0.05 || abs(UV.x + UV.y - capped_time - 0.75) < 0.05) + { + COLOR.rgb = vec3(255.0/255.0,127.0/255.0,80.0/255.0); + } + COLOR.a = COLOR.a*texture(noise,UV).a; +} diff --git a/assets/shaders/SACRIFICE.gdshader.uid b/assets/shaders/SACRIFICE.gdshader.uid new file mode 100644 index 0000000..1d67f82 --- /dev/null +++ b/assets/shaders/SACRIFICE.gdshader.uid @@ -0,0 +1 @@ +uid://d0rylce8i5xtg diff --git a/assets/sprites/atlases/atlas1.png b/assets/sprites/atlases/atlas1.png index 58c7f1a..7b91a63 100644 Binary files a/assets/sprites/atlases/atlas1.png and b/assets/sprites/atlases/atlas1.png differ diff --git a/assets/sprites/gold.png b/assets/sprites/gold.png new file mode 100644 index 0000000..9d95015 Binary files /dev/null and b/assets/sprites/gold.png differ diff --git a/assets/sprites/gold.png.import b/assets/sprites/gold.png.import new file mode 100644 index 0000000..8793f71 --- /dev/null +++ b/assets/sprites/gold.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfmi4cgn6hmsj" +path="res://.godot/imported/gold.png-c9486b6d2b144dc0f2b6faa5d7a615d4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/gold.png" +dest_files=["res://.godot/imported/gold.png-c9486b6d2b144dc0f2b6faa5d7a615d4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/sprites/golden_bg.png b/assets/sprites/golden_bg.png new file mode 100644 index 0000000..74c45f4 Binary files /dev/null and b/assets/sprites/golden_bg.png differ diff --git a/assets/sprites/golden_bg.png.import b/assets/sprites/golden_bg.png.import new file mode 100644 index 0000000..cb67911 --- /dev/null +++ b/assets/sprites/golden_bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3m6opnieiyr2" +path="res://.godot/imported/golden_bg.png-f122c61fcac80f54fa09625ea5d266ea.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/sprites/golden_bg.png" +dest_files=["res://.godot/imported/golden_bg.png-f122c61fcac80f54fa09625ea5d266ea.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index e8b7f78..c8c3885 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Liberation of the Neighbourville" -run/main_scene="uid://c1335fke4thpm" +run/main_scene="uid://bfstrli64u23y" config/features=PackedStringArray("4.4", "C#", "Forward Plus") config/icon="res://icon.png" config/windows_native_icon="res://icon.ico" diff --git a/resources/plants/Peashooter.tres b/resources/plants/Peashooter.tres index f93e023..39b3286 100644 --- a/resources/plants/Peashooter.tres +++ b/resources/plants/Peashooter.tres @@ -11,7 +11,7 @@ display_description = "[p]Simply shoots peas at zombies on the lane[/p] [p]Health points: [color=DARK_RED]3 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] -[p]Firerate: [color=DARK_RED]2/3 seconds[/color].[/p]" +[p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p]" Cost = 75 Scene = ExtResource("1_rqf2x") ReloadTime = 5.0 diff --git a/resources/plants/Snowpea.tres b/resources/plants/Snowpea.tres index fe11310..77ed9be 100644 --- a/resources/plants/Snowpea.tres +++ b/resources/plants/Snowpea.tres @@ -11,8 +11,8 @@ display_description = "[p]Shoots slowing peas at zombies.[/p] [p]Health points: [color=DARK_RED]3 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] [p]Pea damage: [color=DARK_RED]1 pea[/color].[/p] -[p]Firerate: [color=DARK_RED]2/3 seconds[/color].[/p] -[p]Slow factor: [color=STEEL_BLUE]0.75[/color].[/p]" +[p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p] +[p]Slow percentage: [color=STEEL_BLUE]25%[/color].[/p]" Cost = 175 Scene = ExtResource("2_k47h0") ReloadTime = 5.0 diff --git a/resources/plants/Threepeater.tres b/resources/plants/Threepeater.tres index 966be23..3b1b263 100644 --- a/resources/plants/Threepeater.tres +++ b/resources/plants/Threepeater.tres @@ -11,8 +11,8 @@ display_description = "[p][center][color=GOLD][font_size=32]Work in progress[/fo [p]Shoots peas at zombies in three lanes.[/p] [p]Health points: [color=DARK_RED]3 bites[/color].[/p] [p]Reload time: [color=DARK_RED]5 seconds[/color].[/p] -[p]Pea damage: [color=DARK_RED]1 pea[/color] ([color=LIME_GREEN]1 pea[/color] when in close quarters).[/p] -[p]Firerate: [color=DARK_RED]2/3 seconds[/color].[/p]" +[p]Pea damage: [color=DARK_RED]1 pea[/color] ([color=DARK_RED]3 pea[/color] when in close quarters).[/p] +[p]Firerate: [color=DARK_RED]1.5 seconds[/color].[/p]" Cost = 300 Scene = ExtResource("2_uqpu0") ReloadTime = 5.0 diff --git a/resources/themes/GameStyle.tres b/resources/themes/GameStyle.tres index a7b9922..0233b06 100644 --- a/resources/themes/GameStyle.tres +++ b/resources/themes/GameStyle.tres @@ -1,9 +1,10 @@ -[gd_resource type="Theme" load_steps=9 format=3 uid="uid://b8l285cjcgeyi"] +[gd_resource type="Theme" load_steps=13 format=3 uid="uid://b8l285cjcgeyi"] [ext_resource type="FontFile" uid="uid://nbrt5q3t8tud" path="res://assets/fonts/pico12.ttf" id="1_103to"] [ext_resource type="Texture2D" uid="uid://d0yhee0scl7mc" path="res://assets/sprites/gui/ButtonBackground.tres" id="1_y0kbp"] [ext_resource type="Texture2D" uid="uid://dxmg20mrnpt8r" path="res://assets/sprites/gui/SelectionGeneric.tres" id="2_h0nd2"] [ext_resource type="Texture2D" uid="uid://b5skdm3q7tkh3" path="res://assets/sprites/gui/ChooseYourSeeds/Grabber.tres" id="3_i6w8j"] +[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="3_yeah5"] [ext_resource type="Texture2D" uid="uid://cv255d4s0qopj" path="res://assets/sprites/gui/ChooseYourSeeds/Slider.tres" id="4_yeah5"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_na4u2"] @@ -23,6 +24,24 @@ axis_stretch_horizontal = 1 axis_stretch_vertical = 1 draw_center = false +[sub_resource type="AtlasTexture" id="AtlasTexture_5pe7g"] +atlas = ExtResource("3_yeah5") +region = Rect2(226, 77, 18, 18) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_pjyej"] +texture = SubResource("AtlasTexture_5pe7g") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_w6b64"] +texture = SubResource("AtlasTexture_5pe7g") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5pe7g"] texture = ExtResource("4_yeah5") texture_margin_left = 5.0 @@ -41,6 +60,8 @@ Button/styles/focus = SubResource("StyleBoxTexture_mv7jy") Button/styles/hover = SubResource("StyleBoxTexture_na4u2") Button/styles/normal = SubResource("StyleBoxTexture_na4u2") Button/styles/pressed = SubResource("StyleBoxTexture_na4u2") +Panel/styles/panel = SubResource("StyleBoxTexture_pjyej") +PanelContainer/styles/panel = SubResource("StyleBoxTexture_w6b64") VSlider/icons/grabber = ExtResource("3_i6w8j") VSlider/icons/grabber_disabled = ExtResource("3_i6w8j") VSlider/icons/grabber_highlight = ExtResource("3_i6w8j") diff --git a/scenes/entities/plants/wallnut.tscn b/scenes/entities/plants/wallnut.tscn index b229d3c..1e18730 100644 --- a/scenes/entities/plants/wallnut.tscn +++ b/scenes/entities/plants/wallnut.tscn @@ -34,7 +34,7 @@ _maxHP = 600 texture = ExtResource("2_o5tda") hframes = 12 vframes = 3 -frame = 3 +frame = 10 [node name="AnimationPlayer" parent="." index="1"] libraries = { diff --git a/scenes/gui/main_menu.tscn b/scenes/gui/main_menu.tscn new file mode 100644 index 0000000..c9c264d --- /dev/null +++ b/scenes/gui/main_menu.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=4 format=3 uid="uid://bfstrli64u23y"] + +[ext_resource type="Texture2D" uid="uid://dvldjlg0nr355" path="res://assets/sprites/atlases/atlas1.png" id="1_xbu81"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_5pe7g"] +atlas = ExtResource("1_xbu81") +region = Rect2(226, 77, 18, 18) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_jl0ue"] +texture = SubResource("AtlasTexture_5pe7g") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + +[node name="MainMenu" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="PrototypeWindow" type="AcceptDialog" parent="."] +title = "" +size = Vector2i(600, 400) +unresizable = true +borderless = true +theme_override_styles/panel = SubResource("StyleBoxTexture_jl0ue") +ok_button_text = "Let's go" +dialog_close_on_escape = false + +[node name="ScrollContainer" type="ScrollContainer" parent="PrototypeWindow"] +offset_left = 6.0 +offset_top = 6.0 +offset_right = 594.0 +offset_bottom = 343.0 + +[node name="PrototypeNotification" type="RichTextLabel" parent="PrototypeWindow/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +bbcode_enabled = true +text = "[p][center][wave amp=50.0 freq=5.0 connected=1][font_size=24]WELCOME TO LIBERATION OF NEIGHBOURVILLE PROTOTYPE![/font_size][/wave][/center][/p] +[p]Big thanks from me, Rendo, and our team! We appreciate any feedback, so consider reporting bugs to our [color=cyan][url=https://www.youtube.com/watch?v=dQw4w9WgXcQ]discord server[/url][/color].[/p][p][/p] +[p]Liberation of Neighbourville is currently in early stages of development. However, we reached point when all essential systems and mechanics are ready.[/p] +[p][/p] +[p]As for now, you can play survival endless with all currently made plants. Game includes some plants from first Plants versus Zombies, Aloe from sequel, three basic zombies and a hobo zombie.[/p] +[p][/p] +[p]As for 0.2.X version, current roadmap contains:[ul] +[p]Adventure mode[/p] +[p]Almanach[/p] +[p]New plants and zombies, obviously[/p] +[p]More ways to play[/p] +[/ul][/p]" +fit_content = true +scroll_active = false + +[node name="AboutWindow" type="AcceptDialog" parent="."] +title = "" +initial_position = 2 +size = Vector2i(300, 400) +unresizable = true +borderless = true +theme_override_styles/panel = SubResource("StyleBoxTexture_jl0ue") + +[node name="ScrollContainer" type="ScrollContainer" parent="AboutWindow"] +offset_left = 6.0 +offset_top = 6.0 +offset_right = 294.0 +offset_bottom = 343.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="AboutText" type="RichTextLabel" parent="AboutWindow/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +bbcode_enabled = true +text = "[p][center][font_size=24]About[/font_size][/center][/p] +[p]Made in [color=steel_blue]Godot Engine [img=16]res://icon.svg[/img][/color][/p] +[p] +Made by: [ul] +[p]Rendo - programmer, gamedesigner[/p] +[p]Slaimy - graphics designer, gamedesigner[/p] +[p]CaTronick - graphics designer, gamedesigner[/p] +[/ul] +[/p] +[p]All rights for Plants versus Zombies franchise belong to PopCap games[/p]" +fit_content = true +scroll_active = false diff --git a/scenes/sacrifice.tscn b/scenes/sacrifice.tscn new file mode 100644 index 0000000..0153585 --- /dev/null +++ b/scenes/sacrifice.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=13 format=3 uid="uid://d2ut237hxscbo"] + +[ext_resource type="Texture2D" uid="uid://3m6opnieiyr2" path="res://assets/sprites/golden_bg.png" id="1_tsh0d"] +[ext_resource type="Shader" uid="uid://d0rylce8i5xtg" path="res://assets/shaders/SACRIFICE.gdshader" id="2_b8skw"] +[ext_resource type="AudioStream" uid="uid://dwr53ucg07nla" path="res://assets/audio/music/Oliver Buckland - Dead God Graveyard .mp3" id="2_bijdt"] +[ext_resource type="Texture2D" uid="uid://dfmi4cgn6hmsj" path="res://assets/sprites/gold.png" id="3_1ybnd"] + +[sub_resource type="Gradient" id="Gradient_b8skw"] +colors = PackedColorArray(0, 0, 0, 0, 1, 1, 1, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_1ybnd"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_yu0ma"] +width = 600 +height = 400 +color_ramp = SubResource("Gradient_b8skw") +noise = SubResource("FastNoiseLite_1ybnd") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_yu0ma"] +shader = ExtResource("2_b8skw") +shader_parameter/noise = SubResource("NoiseTexture2D_yu0ma") + +[sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_7l6qq"] +stream_count = 1 +stream_0 = ExtResource("2_bijdt") + +[sub_resource type="Animation" id="Animation_b8skw"] +resource_name = "main" +length = 10.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("TextureRect:self_modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(3, 10), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="Animation_1ybnd"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("TextureRect:self_modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_yu0ma"] +_data = { +&"RESET": SubResource("Animation_1ybnd"), +&"main": SubResource("Animation_b8skw") +} + +[node name="SACRIFICE" type="TextureRect"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_tsh0d") + +[node name="TextureRect" type="TextureRect" parent="."] +material = SubResource("ShaderMaterial_yu0ma") +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("3_1ybnd") + +[node name="Musicale" type="AudioStreamPlayer" parent="."] +stream = SubResource("AudioStreamPlaylist_7l6qq") +autoplay = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_yu0ma") +} +autoplay = "main"