Compare commits

...

8 Commits

266 changed files with 15406 additions and 1433 deletions

View File

@@ -0,0 +1,15 @@
~ start
Narrator: You are a newborn god, a consciousness adrift in the cosmos.
Narrator: Below you, a nascent world teems with life. A small tribe of followers has begun to worship you. Their belief is your existence.
Narrator: Your goal is simple: nurture this civilization until they can reach for the stars and carry you with them.
Narrator: Grant them miracles to grow their population and advance their industry. Click the buttons on the right to see your powers.
Narrator: But be warned... your divine presence is a paradox. Every miracle that helps your followers also poisons their world, corrupting it.
Narrator: If the world's corruption reaches 100%, it will be consumed, and you along with it.
Narrator: Guide them. Grow them. But do not destroy them before they can escape. Their fate, and yours, is in your hands.
=> END

View File

@@ -0,0 +1,16 @@
[remap]
importer="dialogue_manager"
importer_version=15
type="Resource"
uid="uid://dxgpvgx7axp88"
path="res://.godot/imported/tutorial.dialogue-20e92c929aa826a6ba83a2adbbdba7f9.tres"
[deps]
source_file="res://Dialogue/tutorial.dialogue"
dest_files=["res://.godot/imported/tutorial.dialogue-20e92c929aa826a6ba83a2adbbdba7f9.tres"]
[params]
defaults=true

View File

@@ -0,0 +1,37 @@
{
"id": "event_plague_descends",
"title": "A Plague Descends",
"description": "A virulent disease is sweeping through the population, sickening your followers and halting progress. Drastic measures may be required.",
"meanTimeToHappen": 300,
"trigger": {
"minFollowers": 500,
"maxCorruption": 80
},
"options": [
{
"text": "We must sacrifice the sick.",
"tooltip": "Immediately lose 20% of your Followers, but the plague is stopped.",
"effects": [
{
"type": "ModifyStat",
"targetStat": "Followers",
"op": "Multiply",
"value": 0.8
}
]
},
{
"text": "We will pray for their recovery.",
"tooltip": "Lose all passive Follower generation for 120 seconds as the plague runs its course.",
"effects": [
{
"type": "ApplyBuff",
"buffId": "plague_debuff",
"targetStat": "FollowersPerSecond",
"multiplier": 0,
"duration": 120
}
]
}
]
}

View File

@@ -0,0 +1,34 @@
{
"id": "event_prophets_rise",
"title": "A Prophet's Rise",
"description": "A charismatic leader has emerged among your followers, inspiring them to new heights of devotion and ingenuity. How shall you guide their efforts?",
"meanTimeToHappen": 200,
"trigger": {
"minFollowers": 800,
"maxCorruption": 60
},
"options": [
{
"text": "Focus their zeal on industry.",
"tooltip": "Gain a large, one-time boost to Production.",
"effects": [
{
"type": "AddResource",
"targetResource": "Production",
"value": 750
}
]
},
{
"text": "Inspire a population boom.",
"tooltip": "Gain a large, one-time boost to Followers.",
"effects": [
{
"type": "AddResource",
"targetResource": "Followers",
"value": 250
}
]
}
]
}

View File

@@ -0,0 +1,38 @@
{
"id": "event_divine_inspiration",
"title": "Divine Inspiration",
"description": "You feel a surge of pure cosmic energy. You can channel this power to inspire your followers in their efforts to either build or cleanse.",
"meanTimeToHappen": 250,
"trigger": {
"minFollowers": 1500,
"maxCorruption": 75
},
"options": [
{
"text": "Inspire frantic construction.",
"tooltip": "Greatly increases all passive Production for 2 minutes.",
"effects": [
{
"type": "ApplyBuff",
"buffId": "inspiration_production_buff",
"targetStat": "ProductionPerSecond",
"multiplier": 3,
"duration": 120
}
]
},
{
"text": "Inspire planetary healing.",
"tooltip": "Greatly reduces all passive Corruption for 2 minutes.",
"effects": [
{
"type": "ApplyBuff",
"buffId": "inspiration_cleansing_buff",
"targetStat": "CorruptionPerSecond",
"multiplier": -2,
"duration": 120
}
]
}
]
}

24
Mods/Events/doomsday.json Normal file
View File

@@ -0,0 +1,24 @@
{
"id": "event_dooms_day",
"title": "DOOMS DAY!",
"description": "A catastrophic event is unfolding, threatening to annihilate everything in its path",
"meanTimeToHappen": 2000,
"trigger": {
"minFollowers": 500,
"maxCorruption": 99
},
"options": [
{
"text": "NOT TODAY...",
"tooltip": "Increase Corruption by 200. (Instant game over)",
"effects": [
{
"type": "ModifyStat",
"targetStat": "Corruption",
"op": "Add",
"value": 200
}
]
}
]
}

View File

@@ -0,0 +1,35 @@
{
"id": "event_ecological_collapse",
"title": "Ecological Collapse",
"description": "The planet's ecosystem has reached a breaking point. Widespread famine and resource scarcity are imminent. We must choose what to prioritize for survival.",
"meanTimeToHappen": 400,
"trigger": {
"minFollowers": 3000,
"maxCorruption": 85
},
"options": [
{
"text": "Ration food for the workers.",
"tooltip": "Maintain your production, but lose a significant number of followers to famine.",
"effects": [
{
"type": "AddResource",
"targetResource": "Followers",
"value": -1000
}
]
},
{
"text": "Divert all efforts to food production.",
"tooltip": "Save your population, but suffer a permanent blow to your industrial efficiency.",
"effects": [
{
"type": "ModifyStat",
"targetStat": "ProductionPerFollower",
"op": "Multiply",
"value": 0.75
}
]
}
]
}

View File

@@ -0,0 +1,24 @@
{
"id": "event_industrial_breakthrough",
"title": "Industrial Breakthrough",
"description": "One of your followers has made a revolutionary discovery in manufacturing techniques! This will permanently increase the efficiency of all future industry.",
"meanTimeToHappen": 240,
"trigger": {
"minFollowers": 1000,
"maxCorruption": 70
},
"options": [
{
"text": "A brilliant mind!",
"tooltip": "Permanently increases base Production Per Second by 2.",
"effects": [
{
"type": "ModifyStat",
"targetStat": "ProductionPerSecond",
"op": "Add",
"value": 2
}
]
}
]
}

View File

@@ -0,0 +1,35 @@
{
"id": "event_unstable_rift",
"title": "Unstable Rift",
"description": "The planet groans under the weight of your power. A rift of pure corruption has torn open, spewing filth into the environment.",
"meanTimeToHappen": 180,
"trigger": {
"minFollowers": 2000,
"maxCorruption": 90
},
"options": [
{
"text": "Seal it with our power.",
"tooltip": "Lose a large amount of Production to seal the rift.",
"effects": [
{
"type": "AddResource",
"targetResource": "Production",
"value": -1000
}
]
},
{
"text": "This is a necessary evil.",
"tooltip": "The rift remains, permanently increasing passive Corruption gain.",
"effects": [
{
"type": "ModifyStat",
"targetStat": "CorruptionPerSecond",
"op": "Add",
"value": 0.5
}
]
}
]
}

146
README.md
View File

@@ -1,52 +1,65 @@
# Parasitic God
![Made With Godot](https://img.shields.io/badge/Made%20With-Godot-478CBF?style=for-the-badge&logo=godot-engine&logoColor=white)
![Lines of Code](https://tokei.rs/b1/github/GKaszewski/parasitic-god?style=for-the-badge&category=code)
![Last Commit](https://img.shields.io/github/last-commit/GKaszewski/parasitic-god?style=for-the-badge)
![Stars](https://img.shields.io/github/stars/GKaszewski/parasitic-god?style=for-the-badge)
---
## The Concept
You are a nascent god, tethered to a small tribe of followers on a vibrant, living world. Their worship is your lifeblood, their growth your only purpose. You grant them miracles, blessing them with bountiful harvests and inspiring great works.
But your power comes at a cost. Every miracle that nurtures your civilization also poisons the planet. The soil turns barren, the forests wither, and the sky darkens. You are their savior and their apocalypse.
---
## The Mission
Guide your people from a simple tribe to a star-faring civilization capable of escaping the dying world. Manage your resources **Faith**, **Followers**, and **Production** while trying to keep the planet's ever-rising **Corruption** at bay.
Unlock new ages of technology, build a network of cities, and perform the final, desperate miracle to launch your followers into the stars before you consume everything.
---
## Features
* **Exponential Growth**
- **Exponential Growth**
Watch a handful of followers grow into a massive civilization with huts, cities, and procedural road networks.
* **A World That Reacts**
- **A World That Reacts**
See the direct consequences of your actions as the vibrant globe fades to a corrupted wasteland and forests vanish based on your decisions.
* **Deeply Moddable**
The entire game from miracles and their effects to the visual tiers of your civilization is driven by simple JSON files. If you can edit a text file, you can mod this game.
- **Deeply Moddable**
The entire gamefrom miracles and their effects to the visual tiers of your civilizationis driven by simple JSON files. If you can edit a text file, you can mod this game.
* **Strategic Resource Management**
- **Strategic Resource Management**
Balance the generation of multiple resources and make difficult choices. Will you sacrifice followers to purge corruption, or push for industrial growth at any cost?
---
## Modding Your Universe
This game was built from the ground up to be modified. You can add new miracles, change existing ones, and even define new visual tiers for your civilization.
This game was built from the ground up to be modified. You can add new miracles, create random events, and even define new visual tiers for your civilization.
### Finding the Mods Folder
First, you need to find the game's `user data` directory. The game will create a `Mods` folder here on its first launch.
The game creates a `Mods` folder in its user data directory on first launch:
* **Windows:** `%APPDATA%\Godot\app_userdata\ParasiticGod\Mods\`
* **macOS:** `~/Library/Application Support/Godot/app_userdata/ParasiticGod/Mods/`
* **Linux:** `~/.local/share/godot/app_userdata/ParasiticGod/Mods/`
- **Windows:** `%APPDATA%\Godot\app_userdata\ParasiticGod\Mods\`
- **macOS:** `~/Library/Application Support/Godot/app_userdata/ParasiticGod/Mods/`
- **Linux:** `~/.local/share/godot/app_userdata/ParasiticGod/Mods/`
Inside, you'll find two folders: `Miracles` and `Tiers`.
Inside, you'll find three folders: `Miracles`, `Tiers`, and `Events`.
The game also loads a set of base mods from its installation directory (`res://Mods`). Any files you place in the user folder will be added to or override the base game's content.
---
### Creating a New Miracle
To add a new miracle, simply create a new `.json` file in the `Mods/Miracles` folder. The filename will be its unique **ID** (e.g., `my_cool_miracle.json`).
Here is a template with all available fields:
To add a new miracle, create a JSON file in `Mods/Miracles`.
The filename becomes its unique **ID** (e.g., `my_cool_miracle.json`):
```json
{
@@ -55,7 +68,7 @@ Here is a template with all available fields:
"followersRequired": 50,
"productionRequired": 0,
"unlockedByDefault": true,
"advancesToAge": "",
"advancesToAge": "The Cool Age",
"effects": [
{
"type": "AddResource",
@@ -64,28 +77,46 @@ Here is a template with all available fields:
}
]
}
````
---
### Creating a New Event
To add a new random event, create a JSON file in `Mods/Events`:
```json
{
"id": "event_my_event",
"title": "A Thing Happened!",
"description": "Something unexpected occurred. What will you do?",
"meanTimeToHappen": 120,
"trigger": {
"minFollowers": 100,
"maxCorruption": 50
},
"options": [
{
"text": "Do the thing!",
"tooltip": "Gain 50 Production.",
"effects": [
{
"type": "AddResource",
"targetResource": "Production",
"value": 50
}
]
}
]
}
```
### Available Effect Types
---
This is the core of the modding system. Each miracle can have one or more effects.
### Modifying Visual Tiers
| Type | Description | Parameters |
| :--- | :--- | :--- |
| **`AddResource`** | Adds or subtracts from a core stat. | `targetResource` (Stat), `value` (number) |
| **`ConvertResource`** | Trades one resource for another. | `fromResource` (Stat), `fromAmount` (number), `toResource` (Stat), `toAmount` (number) |
| **`ModifyStat`** | Permanently changes a passive stat. | `targetStat` (Stat), `op` ("Add" or "Multiply"), `value` (number) |
| **`ApplyBuff`** | Applies a temporary multiplier. | `targetStat` (Stat), `multiplier` (number), `duration` (seconds) |
| **`UnlockMiracle`** | Unlocks other miracles. | `miraclesToUnlock` (list of miracle IDs) |
| **`DestroySelf`** | Removes the miracle's button after use. | (No parameters) |
**Valid Stat Names:** `Faith`, `Followers`, `Corruption`, `Production`, `ProductionPerSecond`, `CorruptionPerSecond`, `FaithPerFollower`.
### Modifying Tiers
You can change the progression of visuals like followers and huts by editing the files in `Mods/Tiers`. For example, to change when followers get new looks, edit `follower_tiers.json`.
The format is a list of tiers, sorted by their threshold.
You can change the visual progression of followers, huts, and temples by editing the files in `Mods/Tiers`.
The format is a list of tiers, sorted by threshold:
```json
{
@@ -93,37 +124,54 @@ The format is a list of tiers, sorted by their threshold.
{
"tierEnum": "Tier1",
"threshold": 0,
"scenePath": "res://Scenes/Followers/followers_tier_1.tscn"
},
{
"tierEnum": "Tier2",
"threshold": 200,
"scenePath": "res://Scenes/Followers/followers_tier_2.tscn"
"imagePath": "user://Mods/Tiers/Huts/my_custom_hut.png",
"scale": { "x": 1.0, "y": 1.0 }
}
]
}
```
* **`tierEnum`**: Must be one of `Tier1`, `Tier2`, `Tier3`, `Tier4`, `Tier5`.
* **`threshold`**: The number of followers (or other stat) needed to unlock this visual.
* **`scenePath`**: The path to the Godot scene (`.tscn`) to display for this tier. You can even point to your own custom scenes if you're an advanced modder\!
* **tierEnum**: Must be one of `Tier1` through `Tier10`.
* **threshold**: The number of followers needed to unlock this visual.
* **imagePath**: The path to the image file. Use `user://` for mods or `res://` for base assets.
* **scale**: Optional X/Y scale multiplier for the image.
-----
---
## 📊 Project Stats
📦 **Lines of Code:**
### Available Effect Types
Both miracles and event options use this list of effects:
| Type | Description | Parameters |
| ------------------- | ----------------------------------- | ---------------------------------------------------------- |
| **AddResource** | Adds or subtracts from a core stat. | `targetResource` (Stat), `value` (number) |
| **ConvertResource** | Trades one resource for another. | `fromResource`, `fromAmount`, `toResource`, `toAmount` |
| **ModifyStat** | Permanently changes a passive stat. | `targetStat`, `op` ("Add" or "Multiply"), `value` |
| **ApplyBuff** | Applies a temporary multiplier. | `buffId`, `targetStat`, `multiplier`, `duration` (seconds) |
| **UnlockMiracle** | Unlocks other miracles. | `miraclesToUnlock` (list of IDs) |
| **DestroySelf** | Removes the miracle's button. | (No parameters) |
| **Win** | Triggers the game's win condition. | (No parameters) |
**Valid Stat Names:**
`Faith`, `Followers`, `Corruption`, `Production`, `ProductionPerSecond`, `CorruptionPerSecond`, `FollowersPerSecond`, `FaithPerFollower`, `ProductionPerFollower`
---
## Project Stats
**Lines of Code:**
![Lines of code](https://tokei.rs/b1/github/GKaszewski/parasitic-god)
📈 **Repo Activity:**
**Repo Activity:**
![Commit activity](https://img.shields.io/github/commit-activity/m/GKaszewski/parasitic-god)
---
## License
This project is open source. See the [LICENSE](https://www.google.com/search?q=./LICENSE) file for details.
This project is open source. See the [LICENSE](./LICENSE.txt) file for details.
-----
---
## Contributing
@@ -131,4 +179,4 @@ While the core code is complete for the jam, you can help by:
* Reporting bugs or balance issues.
* Creating cool new miracles and sharing them.
* Spreading the word\!
* Spreading the word!

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=26 format=3 uid="uid://bfil8sd154327"]
[gd_scene load_steps=27 format=3 uid="uid://bfil8sd154327"]
[ext_resource type="Script" uid="uid://t71ewkpa5uqs" path="res://Scenes/Main/Main.cs" id="1_p8rbg"]
[ext_resource type="Script" uid="uid://b77vh831r1e3c" path="res://Scenes/Main/MiraclePanel.cs" id="2_hcu3t"]
@@ -23,6 +23,7 @@
[ext_resource type="Script" uid="uid://cw8gpeaq3yfjn" path="res://Scripts/Components/RoadManager.cs" id="19_qdkat"]
[ext_resource type="Script" uid="uid://2ipbgwlx1ld1" path="res://Scripts/Components/EventManager.cs" id="22_iwp64"]
[ext_resource type="PackedScene" uid="uid://gdejd44km3co" path="res://Scenes/UI/event_popup.tscn" id="23_4etfk"]
[ext_resource type="Script" uid="uid://dvmrpbba7plsf" path="res://Scripts/EnableMainThemeMusic.cs" id="24_4etfk"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_xggvw"]
bg_color = Color(0, 0, 0, 0.733333)
@@ -189,6 +190,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Camera2D" type="Camera2D" parent="."]
@@ -5690,3 +5692,6 @@ script = ExtResource("22_iwp64")
_eventPopupScene = ExtResource("23_4etfk")
_eventPopupContainer = NodePath("../Notification Layer/CenterContainer")
metadata/_custom_type_script = "uid://2ipbgwlx1ld1"
[node name="Node" type="Node" parent="."]
script = ExtResource("24_4etfk")

View File

@@ -4,8 +4,11 @@
[ext_resource type="PackedScene" uid="uid://b2o5rufqn8dpf" path="res://Scenes/UI/event_option_button.tscn" id="2_gk0qx"]
[node name="EventPopup" type="PanelContainer" node_paths=PackedStringArray("_titleLabel", "_descriptionLabel", "_optionsContainer")]
offset_right = 40.0
offset_bottom = 40.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_lkb7n")
_titleLabel = NodePath("VBoxContainer/Title")
_descriptionLabel = NodePath("VBoxContainer/Description")
@@ -14,13 +17,21 @@ _optionButtonScene = ExtResource("2_gk0qx")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
alignment = 1
[node name="Title" type="Label" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 6
text = "TITLE"
[node name="Description" type="RichTextLabel" parent="VBoxContainer"]
custom_minimum_size = Vector2(320, 128)
layout_mode = 2
size_flags_vertical = 3
fit_content = true
[node name="OptionButtons" type="VBoxContainer" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3

View File

@@ -1,7 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://kcla4knp80mq"]
[gd_scene load_steps=6 format=3 uid="uid://kcla4knp80mq"]
[ext_resource type="Script" uid="uid://cbdokimy0qarg" path="res://Scripts/MainMenu.cs" id="1_8fo1c"]
[ext_resource type="PackedScene" uid="uid://cmhvni5njpmee" path="res://Scenes/main_menu.tscn" id="2_ek8ke"]
[ext_resource type="AudioStream" uid="uid://defdxbv24q6l1" path="res://Sfx/The Hollow Throne.mp3" id="3_ek8ke"]
[ext_resource type="Script" uid="uid://bif3eyfa1lgl4" path="res://Scripts/DisableMainThemeMusic.cs" id="4_eoghk"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i2yjh"]
bg_color = Color(0, 0, 0, 1)
@@ -44,3 +46,12 @@ vertical_alignment = 1
layout_mode = 2
text = "Quit"
flat = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_ek8ke")
volume_db = -3.0
autoplay = true
parameters/looping = true
[node name="Node" type="Node" parent="."]
script = ExtResource("4_eoghk")

View File

@@ -1,9 +1,10 @@
[gd_scene load_steps=6 format=3 uid="uid://cmhvni5njpmee"]
[gd_scene load_steps=7 format=3 uid="uid://cmhvni5njpmee"]
[ext_resource type="Script" uid="uid://cbdokimy0qarg" path="res://Scripts/MainMenu.cs" id="1_1ehe0"]
[ext_resource type="FontFile" uid="uid://wofoiaejxgsp" path="res://Fonts/Playful Boxes.otf" id="1_28flt"]
[ext_resource type="Texture2D" uid="uid://d2wi2cs20q2b6" path="res://Parasitic_God.png" id="1_48xlc"]
[ext_resource type="PackedScene" uid="uid://bfil8sd154327" path="res://Scenes/Main/Main.tscn" id="2_ce3w2"]
[ext_resource type="PackedScene" uid="uid://kvpk5wrcp3rv" path="res://Scenes/tutorial_scene.tscn" id="2_ce3w2"]
[ext_resource type="Script" uid="uid://dvmrpbba7plsf" path="res://Scripts/EnableMainThemeMusic.cs" id="5_n45e2"]
[sub_resource type="LabelSettings" id="LabelSettings_48xlc"]
font = ExtResource("1_28flt")
@@ -65,3 +66,6 @@ text = "Play"
layout_mode = 2
theme_override_font_sizes/font_size = 30
text = "Exit"
[node name="Node" type="Node" parent="."]
script = ExtResource("5_n45e2")

View File

@@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://b7we8gtene47t"]
[ext_resource type="AudioStream" uid="uid://wm3vocs0kkk8" path="res://Sfx/MainTheme.mp3" id="1_f0c52"]
[node name="MainThemeMusic" type="AudioStreamPlayer"]
process_mode = 3
stream = ExtResource("1_f0c52")
volume_db = -5.0
autoplay = true
parameters/looping = true

View File

@@ -0,0 +1,26 @@
[gd_scene load_steps=5 format=3 uid="uid://kvpk5wrcp3rv"]
[ext_resource type="Script" uid="uid://d08d3pi7sx8k3" path="res://Scripts/UI/TutorialScene.cs" id="1_epmsy"]
[ext_resource type="PackedScene" uid="uid://bfil8sd154327" path="res://Scenes/Main/Main.tscn" id="2_mw53g"]
[ext_resource type="Resource" uid="uid://dxgpvgx7axp88" path="res://Dialogue/tutorial.dialogue" id="3_oaf0i"]
[ext_resource type="Texture2D" uid="uid://dg6ac3jb1366r" path="res://Sprites/globe.svg" id="4_7u0dx"]
[node name="TutorialScene" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_epmsy")
_mainGameScene = ExtResource("2_mw53g")
_tutorialDialogue = ExtResource("3_oaf0i")
[node name="World" type="TextureRect" parent="."]
layout_mode = 0
offset_left = 195.0
offset_top = -98.0
offset_right = 915.0
offset_bottom = 732.0
texture = ExtResource("4_7u0dx")
expand_mode = 4

View File

@@ -1,7 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://dtuyx1f5fa8sy"]
[gd_scene load_steps=6 format=3 uid="uid://dtuyx1f5fa8sy"]
[ext_resource type="Script" uid="uid://cbdokimy0qarg" path="res://Scripts/MainMenu.cs" id="1_a00f1"]
[ext_resource type="PackedScene" uid="uid://cmhvni5njpmee" path="res://Scenes/main_menu.tscn" id="2_awi1s"]
[ext_resource type="AudioStream" uid="uid://46kqkf4ckqek" path="res://Sfx/Ascend Beyond.mp3" id="3_awi1s"]
[ext_resource type="Script" uid="uid://bif3eyfa1lgl4" path="res://Scripts/DisableMainThemeMusic.cs" id="4_bwc64"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i2yjh"]
bg_color = Color(0, 0, 0, 1)
@@ -43,3 +45,12 @@ vertical_alignment = 1
layout_mode = 2
text = "Quit"
flat = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
stream = ExtResource("3_awi1s")
volume_db = -3.0
autoplay = true
parameters/looping = true
[node name="Node" type="Node" parent="."]
script = ExtResource("4_bwc64")

View File

@@ -50,8 +50,7 @@ public partial class EventManager : Node
private void FireEvent(EventDefinition eventDef)
{
GD.Print($"Firing event: {eventDef.Title}");
GetTree().Paused = true;
GameBus.Instance.SetPause(true);
var popup = _eventPopupScene.Instantiate<EventPopup>();
_eventPopupContainer.AddChild(popup);

View File

@@ -1,4 +1,5 @@
using Godot;
using ParasiticGod.Scripts.Singletons;
namespace ParasiticGod.Scripts.Components;
@@ -13,6 +14,8 @@ public partial class PauseManager : CanvasLayer
ProcessMode = ProcessModeEnum.Always;
_pauseMenu.Hide();
_pauseButton.Pressed += TogglePause;
GameBus.Instance.PauseStateChanged += OnPauseStateChanged;
}
public override void _Input(InputEvent @event)
@@ -20,10 +23,21 @@ public partial class PauseManager : CanvasLayer
if (@event.IsActionPressed("pause")) TogglePause();
}
public override void _ExitTree()
{
if (GameBus.Instance != null)
{
GameBus.Instance.PauseStateChanged -= OnPauseStateChanged;
}
}
private void TogglePause()
{
var isPaused = !GetTree().Paused;
GetTree().Paused = isPaused;
GameBus.Instance.SetPause(!GetTree().Paused);
}
private void OnPauseStateChanged(bool isPaused)
{
_pauseMenu.Visible = isPaused;
}
}

View File

@@ -0,0 +1,12 @@
using Godot;
namespace ParasiticGod.Scripts;
public partial class DisableMainThemeMusic : Node
{
public override void _Ready()
{
var mainThemeMusic = GetNodeOrNull<AudioStreamPlayer>("/root/MainThemeMusic");
mainThemeMusic?.Stop();
}
}

View File

@@ -0,0 +1 @@
uid://bif3eyfa1lgl4

View File

@@ -0,0 +1,15 @@
using Godot;
namespace ParasiticGod.Scripts;
public partial class EnableMainThemeMusic : Node
{
public override void _Ready()
{
var mainThemeMusic = GetNodeOrNull<AudioStreamPlayer>("/root/MainThemeMusic");
if (mainThemeMusic is { Playing: false })
{
mainThemeMusic.Play();
}
}
}

View File

@@ -0,0 +1 @@
uid://dvmrpbba7plsf

View File

@@ -32,6 +32,7 @@ public partial class GameBus : Node
public event Action PopulationVisualsUpdated;
public event Action<string> AgeAdvanced;
public event Action GameWon;
public event Action<bool> PauseStateChanged;
public override void _EnterTree()
{
@@ -133,12 +134,18 @@ public partial class GameBus : Node
{
effect.Execute(_gameState);
}
GetTree().Paused = false;
SetPause(false);
}
public void SubscribeToStat(Stat stat, Action<double> listener) => _gameState.Subscribe(stat, listener);
public void UnsubscribeFromStat(Stat stat, Action<double> listener) => _gameState.Unsubscribe(stat, listener);
public void SetPause(bool isPaused)
{
GetTree().Paused = isPaused;
PauseStateChanged?.Invoke(isPaused);
}
public GameState CurrentState => _gameState;
[ConsoleCommand("set_stat", "Sets the value of a specified stat.")]

View File

@@ -11,9 +11,20 @@ public partial class EventPopup : PanelContainer
[Export] private RichTextLabel _descriptionLabel;
[Export] private VBoxContainer _optionsContainer;
[Export] private PackedScene _optionButtonScene; // A scene for a single button
[Export] private float _choiceTimeout = 30.0f;
private EventDefinition _eventDef;
private Timer _timeoutTimer;
private readonly RandomNumberGenerator _rng = new();
public override void _Ready()
{
ProcessMode = ProcessModeEnum.Always;
}
public void DisplayEvent(EventDefinition eventDef)
{
_eventDef = eventDef;
_titleLabel.Text = eventDef.Title;
_descriptionLabel.Text = eventDef.Description;
@@ -30,11 +41,36 @@ public partial class EventPopup : PanelContainer
button.Pressed += () =>
{
GameBus.Instance.ExecuteEffects(option.Effects);
QueueFree();
_timeoutTimer.Stop();
HandleChoice(option);
};
_optionsContainer.AddChild(button);
}
_timeoutTimer = new Timer { WaitTime = _choiceTimeout, OneShot = true };
AddChild(_timeoutTimer);
_timeoutTimer.Timeout += OnTimeout;
_timeoutTimer.Start();
}
private void OnTimeout()
{
if (_eventDef.Options.Count > 0)
{
var randomIndex = _rng.RandiRange(0, _eventDef.Options.Count - 1);
HandleChoice(_eventDef.Options[randomIndex]);
}
else
{
QueueFree();
GetTree().Paused = false;
}
}
private void HandleChoice(EventOptionDefinition option)
{
GameBus.Instance.ExecuteEffects(option.Effects);
QueueFree();
}
}

View File

@@ -0,0 +1,29 @@
using DialogueManagerRuntime;
using Godot;
namespace ParasiticGod.Scripts.UI;
public partial class TutorialScene : Control
{
[Export] private PackedScene _mainGameScene;
[Export] private Resource _tutorialDialogue;
public override void _Ready()
{
DialogueManager.DialogueEnded += OnDialogueEnded;
DialogueManager.ShowExampleDialogueBalloon(_tutorialDialogue, "start");
}
public override void _ExitTree()
{
DialogueManager.DialogueEnded -= OnDialogueEnded;
}
private void OnDialogueEnded(Resource resource)
{
if (resource == _tutorialDialogue)
{
GetTree().ChangeSceneToPacked(_mainGameScene);
}
}
}

View File

@@ -0,0 +1 @@
uid://d08d3pi7sx8k3

BIN
Sfx/Ascend Beyond.mp3 Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://46kqkf4ckqek"
path="res://.godot/imported/Ascend Beyond.mp3-225c648bac3dc986f75992f9d3ccb96d.mp3str"
[deps]
source_file="res://Sfx/Ascend Beyond.mp3"
dest_files=["res://.godot/imported/Ascend Beyond.mp3-225c648bac3dc986f75992f9d3ccb96d.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
Sfx/MainTheme.mp3 Normal file

Binary file not shown.

19
Sfx/MainTheme.mp3.import Normal file
View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://wm3vocs0kkk8"
path="res://.godot/imported/MainTheme.mp3-212a5702d6d6fce08090316bf842178d.mp3str"
[deps]
source_file="res://Sfx/MainTheme.mp3"
dest_files=["res://.godot/imported/MainTheme.mp3-212a5702d6d6fce08090316bf842178d.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

BIN
Sfx/The Hollow Throne.mp3 Normal file

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://defdxbv24q6l1"
path="res://.godot/imported/The Hollow Throne.mp3-2205b1087f253cf81b97a8caaea58efc.mp3str"
[deps]
source_file="res://Sfx/The Hollow Throne.mp3"
dest_files=["res://.godot/imported/The Hollow Throne.mp3-2205b1087f253cf81b97a8caaea58efc.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cx3lujtdnjgbd"
path="res://.godot/imported/UI_SFX_Pack_61_1.wav-7cbb56ae27212293a53b44b25ca63aa1.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_1.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_1.wav-7cbb56ae27212293a53b44b25ca63aa1.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://d1ojjdhkye60a"
path="res://.godot/imported/UI_SFX_Pack_61_10.wav-90ddfa78058d85aa9ad63fff5c97ca16.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_10.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_10.wav-90ddfa78058d85aa9ad63fff5c97ca16.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://rqiatqrim2ej"
path="res://.godot/imported/UI_SFX_Pack_61_11.wav-7e6ae22c23408d14e8e5f12526df9be6.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_11.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_11.wav-7e6ae22c23408d14e8e5f12526df9be6.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://s13wrqeinabo"
path="res://.godot/imported/UI_SFX_Pack_61_12.wav-c64d956571bc7960f7f3021c8c047031.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_12.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_12.wav-c64d956571bc7960f7f3021c8c047031.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bdauyaf3m1ii6"
path="res://.godot/imported/UI_SFX_Pack_61_13.wav-b432c83d18ec2528b5dd55c9e6eb6e26.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_13.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_13.wav-b432c83d18ec2528b5dd55c9e6eb6e26.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b3tiilkhxedmc"
path="res://.godot/imported/UI_SFX_Pack_61_14.wav-4b60ebf5c2442a0bbbd4db41353e2797.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_14.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_14.wav-4b60ebf5c2442a0bbbd4db41353e2797.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://blic15k83hbp5"
path="res://.godot/imported/UI_SFX_Pack_61_15.wav-9a647996664e80a0d3942b61168ce672.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_15.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_15.wav-9a647996664e80a0d3942b61168ce672.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c4632bogkmg5h"
path="res://.godot/imported/UI_SFX_Pack_61_16.wav-76d966d41c556ba7145673f9724f6af7.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_16.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_16.wav-76d966d41c556ba7145673f9724f6af7.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://boo1lqccxcbu6"
path="res://.godot/imported/UI_SFX_Pack_61_17.wav-30edf21c9a00a9e8a25dfd196b130de0.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_17.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_17.wav-30edf21c9a00a9e8a25dfd196b130de0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://flpvi8s8psm6"
path="res://.godot/imported/UI_SFX_Pack_61_18.wav-ab5167bf0b3994c80d3b7898b397b97e.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_18.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_18.wav-ab5167bf0b3994c80d3b7898b397b97e.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bcpcsfjo2uswe"
path="res://.godot/imported/UI_SFX_Pack_61_19.wav-c7f9aec3f5b2dd3a1d34a251d65759cd.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_19.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_19.wav-c7f9aec3f5b2dd3a1d34a251d65759cd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c01ftvj3i4oc4"
path="res://.godot/imported/UI_SFX_Pack_61_2.wav-cef5290c13b504eab580953dd33c0aa5.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_2.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_2.wav-cef5290c13b504eab580953dd33c0aa5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dcp5c5scviebc"
path="res://.godot/imported/UI_SFX_Pack_61_20.wav-ea47d81b2f83cf198a153b09175cb228.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_20.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_20.wav-ea47d81b2f83cf198a153b09175cb228.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cy31bm14a6omt"
path="res://.godot/imported/UI_SFX_Pack_61_21.wav-0fe9870134ba463a82bdfe1e4d94a03b.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_21.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_21.wav-0fe9870134ba463a82bdfe1e4d94a03b.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ysbmpwuqpim8"
path="res://.godot/imported/UI_SFX_Pack_61_23.wav-8c0d86195ff5413fd407292756c1d336.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_23.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_23.wav-8c0d86195ff5413fd407292756c1d336.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dhqa03l7kw03m"
path="res://.godot/imported/UI_SFX_Pack_61_24.wav-837c322c15e20e4fe5fbb885cace11fd.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_24.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_24.wav-837c322c15e20e4fe5fbb885cace11fd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cyyuh1xr8itfm"
path="res://.godot/imported/UI_SFX_Pack_61_25.wav-d22550b01678995f53fce1c625d55b16.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_25.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_25.wav-d22550b01678995f53fce1c625d55b16.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b3yg0w0qt46we"
path="res://.godot/imported/UI_SFX_Pack_61_26.wav-6bef22aab496d713297b287eb10bfc41.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_26.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_26.wav-6bef22aab496d713297b287eb10bfc41.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dykqhqwngulw1"
path="res://.godot/imported/UI_SFX_Pack_61_27.wav-42306e4c486a9a557e36feefdd50d3f0.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_27.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_27.wav-42306e4c486a9a557e36feefdd50d3f0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dqtslrqmarhjo"
path="res://.godot/imported/UI_SFX_Pack_61_28.wav-2e9c3f1bf9225b0f1d87fe8ea72a90b3.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_28.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_28.wav-2e9c3f1bf9225b0f1d87fe8ea72a90b3.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bsrgi55la2b1a"
path="res://.godot/imported/UI_SFX_Pack_61_29.wav-f98662b8b39c10edf191c81e73a9a926.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_29.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_29.wav-f98662b8b39c10edf191c81e73a9a926.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dr6eserw65udy"
path="res://.godot/imported/UI_SFX_Pack_61_3.wav-595acc8321e40525bc22cca51bae9220.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_3.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_3.wav-595acc8321e40525bc22cca51bae9220.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bhqnn0tvgc7xs"
path="res://.godot/imported/UI_SFX_Pack_61_30.wav-d5ba0ff830dfe39e52bcf39c17b29dcd.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_30.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_30.wav-d5ba0ff830dfe39e52bcf39c17b29dcd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c4vj8lxy0p62u"
path="res://.godot/imported/UI_SFX_Pack_61_31.wav-57d309d9a1bda39c87ad7b1f713c0a85.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_31.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_31.wav-57d309d9a1bda39c87ad7b1f713c0a85.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dor20ljq5q7gd"
path="res://.godot/imported/UI_SFX_Pack_61_32.wav-40724843de9f754ccfab7dadc92e8e87.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_32.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_32.wav-40724843de9f754ccfab7dadc92e8e87.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bieunboco42me"
path="res://.godot/imported/UI_SFX_Pack_61_33.wav-664fbe0a3c0b8160885971af1e55e038.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_33.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_33.wav-664fbe0a3c0b8160885971af1e55e038.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b3btdu1v8t482"
path="res://.godot/imported/UI_SFX_Pack_61_34.wav-5c3244297eb7410ab8776167819f4504.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_34.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_34.wav-5c3244297eb7410ab8776167819f4504.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://yo2m4d6ib6q6"
path="res://.godot/imported/UI_SFX_Pack_61_35.wav-173cda2af9c8e31844a25d11d5d3575d.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_35.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_35.wav-173cda2af9c8e31844a25d11d5d3575d.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://jll4foes18o8"
path="res://.godot/imported/UI_SFX_Pack_61_36.wav-00594c1019f574beb5ffaf13714b9148.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_36.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_36.wav-00594c1019f574beb5ffaf13714b9148.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://be3ilgasbtoc6"
path="res://.godot/imported/UI_SFX_Pack_61_37.wav-1d2059445f066b3d6c2a7dc5e9add307.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_37.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_37.wav-1d2059445f066b3d6c2a7dc5e9add307.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ce8m2ocp61jgp"
path="res://.godot/imported/UI_SFX_Pack_61_38.wav-802954e343f395cb2d5ed760496abcc2.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_38.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_38.wav-802954e343f395cb2d5ed760496abcc2.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cacqorn65l4h4"
path="res://.godot/imported/UI_SFX_Pack_61_39.wav-f3f788d9e19c401474ab24d39ae6cd51.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_39.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_39.wav-f3f788d9e19c401474ab24d39ae6cd51.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bkabhlmolw7k1"
path="res://.godot/imported/UI_SFX_Pack_61_4.wav-d31f6db26ccd3c239b63502d56cfd848.sample"
[deps]
source_file="res://Sfx/UI_SFX_Pack_61_4.wav"
dest_files=["res://.godot/imported/UI_SFX_Pack_61_4.wav-d31f6db26ccd3c239b63502d56cfd848.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

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