Compare commits

...

2 Commits

3 changed files with 93 additions and 74 deletions

148
README.md
View File

@@ -28,85 +28,103 @@ Unlock new ages of technology, build a network of cities, and perform the final,
* **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
## **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
### **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.
First, you need to find the game's user data directory. The game will create a Mods folder here on its 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), and any files you place in the user folder will be added to or will override the base game's content.
### Creating a New Miracle
### **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`).
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:
```json
{
"name": "My Cool Miracle",
"faithCost": 100,
"followersRequired": 50,
"productionRequired": 0,
"unlockedByDefault": true,
"advancesToAge": "",
"effects": [
{
"type": "AddResource",
"targetResource": "Faith",
"value": 200
}
]
{
"name": "My Cool Miracle",
"faithCost": 100,
"followersRequired": 50,
"productionRequired": 0,
"unlockedByDefault": true,
"advancesToAge": "The Cool Age",
"effects": \[
{
"type": "AddResource",
"targetResource": "Faith",
"value": 200
}
\]
}
```
### Available Effect Types
### **Creating a New Event**
This is the core of the modding system. Each miracle can have one or more effects.
To add a new random event, create a .json file in the Mods/Events folder.
{
"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
}
\]
}
\]
}
### **Modifying Visual Tiers**
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 their threshold.
{
"tiers": \[
{
"tierEnum": "Tier1",
"threshold": 0,
"imagePath": "user://Mods/Tiers/Huts/my\_custom\_hut.png",
"scale": { "x": 1.0, "y": 1.0 }
}
\]
}
* **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. Can be a user:// path for mods or a res:// path for base game assets.
* **scale**: An optional X/Y scale multiplier for the image.
### **Available Effect Types**
This is the core of the modding system. 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` (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) |
| :---- | :---- | :---- |
| **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. | buffId (string), 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) |
| **Win** | Triggers the game's win condition. | (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.
```json
{
"tiers": [
{
"tierEnum": "Tier1",
"threshold": 0,
"scenePath": "res://Scenes/Followers/followers_tier_1.tscn"
},
{
"tierEnum": "Tier2",
"threshold": 200,
"scenePath": "res://Scenes/Followers/followers_tier_2.tscn"
}
]
}
```
* **`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\!
**Valid Stat Names:** Faith, Followers, Corruption, Production, ProductionPerSecond, CorruptionPerSecond, FollowersPerSecond, FaithPerFollower, ProductionPerFollower.
-----

View File

@@ -3,13 +3,13 @@
name="Linux"
platform="Linux"
runnable=true
advanced_options=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="Builds/parasitic-god.x86_64"
export_path="Builds/linux/parasitic-god.x86_64"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
@@ -54,7 +54,7 @@ custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
export_path="Builds/windows/parasitic-god.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
@@ -67,8 +67,8 @@ script_export_mode=2
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
debug/export_console_wrapper=0
binary_format/embed_pck=true
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
binary_format/architecture="x86_64"
@@ -79,13 +79,13 @@ codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/icon="uid://d2wi2cs20q2b6"
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/company_name="KaszoSoft"
application/product_name="Parasitic God"
application/file_description=""
application/copyright=""
application/trademarks=""
@@ -110,5 +110,5 @@ ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debu
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true
dotnet/include_debug_symbols=false
dotnet/embed_build_outputs=false

View File

@@ -11,6 +11,7 @@ config_version=5
[application]
config/name="Parasitic God"
config/version="1.0"
run/main_scene="uid://cmhvni5njpmee"
config/features=PackedStringArray("4.4", "C#", "GL Compatibility")
boot_splash/show_image=false