Skip to content

Commit

Permalink
Updated all READMEs and changed version number
Browse files Browse the repository at this point in the history
  • Loading branch information
AppleHair committed Jul 9, 2024
1 parent 1ef3285 commit 43461e7
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 18 deletions.
16 changes: 9 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

The Unrestricted Difficulties framework is a soft-coded FNF mod, which gives FNF modders more control over difficulties and variations.

> [!CAUTION]
> ## Usage as dependency for other mods
> Previously, I had a section on gamebanana that explained how to bundle this framework with your mod, but now I want to suggest the exact opposite: **DON'T BUNDLE THIS FRAMEWORK WITH YOUR MOD AT ALL!!**. Instead, you should tell your users to download this framework separately, and then download your mod. This way, your mod will be more future-proof, and you won't have to worry about updating this framework in your mod's download every time I update this framework. If you want to make sure your mod won't load when this framework isn't installed or just make sure this framework loads before your mod does, you can add it as a dependency to your mod's metadata and use polymod's [dependency behavior](https://polymod.io/docs/dependencies/).
>
> Also make sure you package your mod with a folder with the mod's propr name inside the zip, so people will be able to extract it, because append logic and dependency behavior won't work otherwise.
## Features

The framework includes the following features:
Expand All @@ -12,12 +18,8 @@ The framework includes the following features:
- Adds a difficulty sorting system, which orders difficulties in freeplay and story mode according to priority numbers.
- Support for custom difficulty sprites in the result screen (was relevant before 0.4.0, but now it's already implemented in the base game), which can also be animated (animations are still relevant).
- Adds difficulty display name trimming to the pause menu (and hopefully to the discord RPC too when it gets added to FNF), which will trim a difficulty's variation name from the difficulty's display name if its name starts with the variation name (this doesn't apply to difficulty names that are the same as the variation name).
- Added special attributes to all of the song scripts, which you can set using `scriptSet` on `onCountdownStart` through a module, as opposed to overriding the scripts, to customize the script's default behavior (which includes cutscenes and more song-specific stuff) (to be deprecated in favor of a variation-specific song scripts system in the future).
- Improved story mode menu, with the following key improvements:
- Limits the range of difficulties you can choose from and changes the song list according to the songs and difficulties available in each level, as opposed to relying on a constant and displaying only "easy", "normal" and "hard" (which means you can play base game levels on "erect" and "nightmare" difficulties from the story mode menu using this framework).
- Limits the range of difficulties you can choose from and changes the song list according to the songs and difficulties available in each level, as opposed to relying on a constant and displaying only `easy`, `normal` and `hard` (which means you can play base game levels on `erect` and `nightmare` difficulties from the story mode menu using this framework).
- Adds custom story mode menu script events (`UD_STORY_ENTER`, `UD_STORY_SCROLL`, `UD_STORY_EXIT`, `UD_STORY_CONFIRM`), which get called on modules.
- Lets you inject alternative data to a level for different variations\difficulties available in the level, meaning you can customize how a level looks in the story mode menu (and even add songs under specific requirements) when having specific difficulties selected.
- Added special attributes to all of the song scripts, which you can set using `scriptSet` on `onCountdownStart` through a module, as opposed to overriding the scripts, to customize the script's default behavior (which includes cutscenes and more song-specific stuff) (to be deprecated in favor of a variation-specific song scripts system in the future).

## Usage as dependency for other mods

Previously, I had a section on gamebanana that explained how to bundle this framework with your mod, but now I want to suggest the exact opposite: **DON'T BUNDLE THIS FRAMEWORK WITH YOUR MOD AT ALL!!**. Instead, you should tell your users to download this framework separately, and then download your mod. This way, your mod will be more future-proof, and you won't have to worry about updating this framework in your mod's download every time I update this framework. If you want to make sure your mod won't load when this framework isn't installed or just make sure this framework loads before your mod does, you can add it as a dependency to your mod's metadata and use polymod's [dependency behavior](https://polymod.io/docs/dependencies/). Also make sure you package your mod with a folder with the mod's propr name inside the zip, so people will be able to extract it, because append logic and dependency behavior won't work otherwise.
- Lets you inject alternative data to a level for different variations\difficulties available in the level, meaning you can customize how a level looks in the story mode menu (and even add songs under specific requirements) when having specific difficulties selected.
2 changes: 1 addition & 1 deletion _polymod_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
"url": "https://github.com/AppleHair"
}],
"api_version": "0.1.0",
"mod_version": "1.0.3",
"mod_version": "1.0.4",
"license": "CC BY-NC 4.0,MIT"
}
14 changes: 8 additions & 6 deletions data/UD/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Difficulty Definitions

Inside the data/UD folder there's a file called "difficulties.txt". You can append difficulty definitions to this file using polymod's append logic, which contain the difficulty's ID/name, its priority number (optional) and its display name (optional). The priority number is used for difficulty sorting in the menus and the display name is used for changing the name the difficulty appears with in the pause menu.
Inside the `data/UD` folder there's a file called `difficulties.txt`. You can append difficulty definitions to this file using polymod's append logic, which contain the difficulty's ID/name, its priority number (optional) and its display name (optional). The priority number is used for difficulty sorting in the menus and the display name is used for changing the name the difficulty appears with in the pause menu.

> [!TIP]
> The default difficulties' priority numbers are as follows:
Expand All @@ -10,16 +10,16 @@ Inside the data/UD folder there's a file called "difficulties.txt". You can appe
> - erect: 7
> - nightmare: 9
>
> So be aware of that if you want to position your custom difficulties between the default ones.
> So be aware that if you want to position your custom difficulties between the default ones, you'll need to use these numbers.
In order to use the append logic, you need to create a new folder called "_append" in the root of your mod's folder (mods/[mod name]/_append). Now, if you use this folder like your root folder, every file you put in there will be appended to the original file with the same name in the root folder. This way, you can append difficulty definitions to the difficulties.txt file without having to modify the original file.
In order to use the append logic, you need to create a new folder called `_append` in the root of your mod's folder (`mods/[mod name]/_append`). Now, if you use this folder like your root folder, every file you put in there will be appended to the original file with the same name in the root folder. This way, you can append difficulty definitions to the `difficulties.txt` file without having to modify the original file.

Now for the format of the difficulty definitions:
- The difficulty's ID/name, priority number and display name are separated by a colon.
- If you don't specify a priority number, your difficulty will just get appended to the end of the difficulty list in menus.
- If you don't specify a display name, the difficulty's ID/name will be used instead and difficulty name trimming (trims the variation name from the start of the difficulty name) might effect the way your difficulty is displayed on the pause menu.
- every new difficulty definition should be on a new line.
- Empty lines are ignored, and lines starting with a "//" are treated as comments and are also ignored.
- Empty lines are ignored, and lines starting with a `//` are treated as comments and are also ignored.

## Examples

Expand All @@ -30,7 +30,8 @@ standard,3
flip,5
```
In this case, the final order of the difficulties in the menu would be:
easy, easier, normal, standard, hard, flip, erect, nightmare

easy, easier, normal, standard, hard, flip, erect, nightmare

Alternatively, you can just append the difficulty name without a priority number, like so:
```txt
Expand All @@ -39,7 +40,8 @@ standard
flip
```
In this case, the final order of the difficulties in the menu would be:
easy, normal, hard, erect, nightmare, easier, standard, flip

easy, normal, hard, erect, nightmare, easier, standard, flip

If you want to change the display names of difficulties and have more specific difficulty IDs, you can do so like this:
```txt
Expand Down
9 changes: 5 additions & 4 deletions data/UD/vari-injections/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

Instead of replacing existing songs' default metadata and chart files, this framework allows you to inject your variation into existing songs using polymod's append logic. This way, you can add your variation to an existing song without replacing its files, and multiple mods can add their variations to the same song without conflicting with yours.

To inject your variation into existing songs, you'll need to put an empty ".txt" file in this folder, with its name as your variation's name, and then add another ".txt" file with the same name to the same place, but through the _append folder, and fill that file with the song ids you want to inject your variation to separated by new lines. This method utlizes polymod's append logic, which means every variation injection file you make will be appendable by other mods.
To inject your variation into existing songs, you'll need to put an empty `.txt` file in this folder, with its name as your variation's name, and then add another `.txt` file with the same name to the same place, but through the `_append` folder, and fill that file with the song ids you want to inject your variation to separated by new lines. This method utlizes polymod's append logic, which means every variation injection file you make will be appendable by other mods.

> [!NOTE]
> You need to have the variation chart and metadata files placed in the songs folder for this to work (NOT through the `_append` folder). However, just remember not to replace the default ones, because this is the action variation injection was meant to replace.
## Examples

Expand Down Expand Up @@ -63,6 +66,4 @@ south
monster
```

As you can see, the empty file's only purpose should be to form a base for polymod to append to, and that's why only append logic should be used to make the actual list of songs to inject the variation to.

Another thing to note is that you need to have the variation chart and metadata files placed in the songs folder for this to work (NOT through the _append folder). However, just remember not to replace the default ones, because this is the action variation injection was meant to replace.
As you can see, the empty file's only purpose should be to form a base for polymod to append to, and that's why only append logic should be used to make the actual list of songs to inject the variation to.

0 comments on commit 43461e7

Please sign in to comment.