From 075f03235d159f90143a8955491e121b868d3f33 Mon Sep 17 00:00:00 2001 From: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:06:27 -0500 Subject: [PATCH 1/7] fix: Fix an issue where the album didn't update when switching variations --- source/funkin/ui/freeplay/FreeplayState.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx index d1e498606..404526dbc 100644 --- a/source/funkin/ui/freeplay/FreeplayState.hx +++ b/source/funkin/ui/freeplay/FreeplayState.hx @@ -2189,7 +2189,7 @@ class FreeplayState extends MusicBeatSubState // Set the album graphic and play the animation if relevant. var newAlbumId:Null = daSong?.data.getAlbumId(currentDifficulty, currentVariation); - if (albumRoll.albumId != newAlbumId && !busy) + if (albumRoll.albumId != newAlbumId) { albumRoll.albumId = newAlbumId; albumRoll.skipIntro(); From e8cd87c1f141632795c1956da4183889a6a91f8f Mon Sep 17 00:00:00 2001 From: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> Date: Wed, 11 Jun 2025 00:55:02 -0500 Subject: [PATCH 2/7] Add `FEATURE_NAUGHTYNESS` and turn it off for mobile builds --- project.hxp | 9 +++++++++ source/funkin/Preferences.hx | 4 ++++ source/funkin/ui/options/PreferencesMenu.hx | 2 ++ 3 files changed, 15 insertions(+) diff --git a/project.hxp b/project.hxp index 0560ebbf7..065d02953 100644 --- a/project.hxp +++ b/project.hxp @@ -401,6 +401,12 @@ class Project extends HXProject */ static final FEATURE_MOBILE_IAR:FeatureFlag = "FEATURE_MOBILE_IAR"; + /** + * `-DFEATURE_NAUGHTYNESS` + * If this feature flag is enabled, naughtyness will be a toggleable option in the Options Menu. + */ + static final FEATURE_NAUGHTYNESS:FeatureFlag = "FEATURE_NAUGHTYNESS"; + // // CONFIGURATION FUNCTIONS // @@ -758,6 +764,9 @@ class Project extends HXProject // Should be true only on mobile builds. FEATURE_TOUCH_CONTROLS.apply(this, isMobile()); + // Should be true on everything other than mobile. + FEATURE_NAUGHTYNESS.apply(this, !isMobile()); + // Should be true only on mobile release builds. Remember you can add the flag manually for testing. FEATURE_MOBILE_ADVERTISEMENTS.apply(this, (isMobile() && isRelease() && envConfig != null)); FEATURE_MOBILE_IAP.apply(this, (isMobile() && isRelease() && envConfig != null)); diff --git a/source/funkin/Preferences.hx b/source/funkin/Preferences.hx index 030ce9810..c8843e8d5 100644 --- a/source/funkin/Preferences.hx +++ b/source/funkin/Preferences.hx @@ -56,7 +56,11 @@ class Preferences static function get_naughtyness():Bool { + #if NO_FEATURE_NAUGHTYNESS + return false; + #else return Save?.instance?.options?.naughtyness; + #end } static function set_naughtyness(value:Bool):Bool diff --git a/source/funkin/ui/options/PreferencesMenu.hx b/source/funkin/ui/options/PreferencesMenu.hx index 24d3fd791..5ff0803d2 100644 --- a/source/funkin/ui/options/PreferencesMenu.hx +++ b/source/funkin/ui/options/PreferencesMenu.hx @@ -108,9 +108,11 @@ class PreferencesMenu extends Page */ function createPrefItems():Void { + #if FEATURE_NAUGHTYNESS createPrefItemCheckbox('Naughtyness', 'If enabled, raunchy content (such as swearing, etc.) will be displayed.', function(value:Bool):Void { Preferences.naughtyness = value; }, Preferences.naughtyness); + #end createPrefItemCheckbox('Downscroll', 'If enabled, this will make the notes move downwards.', function(value:Bool):Void { Preferences.downscroll = value; }, Preferences.downscroll, From 2cf29a67d9676c541b0473e2e11a59c094863ae6 Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Wed, 11 Jun 2025 03:30:50 -0400 Subject: [PATCH 3/7] Added a separate variable specifically for mobile censorship. --- project.hxp | 16 ++++++++++++++-- source/funkin/Preferences.hx | 4 ++++ source/funkin/util/Constants.hx | 5 +++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/project.hxp b/project.hxp index 065d02953..092dc7ed1 100644 --- a/project.hxp +++ b/project.hxp @@ -210,6 +210,14 @@ class Project extends HXProject */ static final UNLOCK_EVERYTHING:FeatureFlag = "UNLOCK_EVERYTHING"; + /** + * `-DMOBILE_CENSORSHIP` + * The Android platform specifically dislikes the words "fuck" and "cunt", + * but "cock", implied nudity/covered sex, etc. are fine, so fully disabling naughtyness is overly broad. + * If this flag is enabled, some censorship will be applied to the game even if naughtyness is on. + */ + static final MOBILE_CENSORSHIP:FeatureFlag = "MOBILE_CENSORSHIP"; + /** * `-DFEATURE_DEBUG_FUNCTIONS` * If this flag is enabled, the game will have all playtester-only debugging functionality enabled. @@ -404,6 +412,7 @@ class Project extends HXProject /** * `-DFEATURE_NAUGHTYNESS` * If this feature flag is enabled, naughtyness will be a toggleable option in the Options Menu. + * If disabled, the option will be hidden and the game will always be censored. */ static final FEATURE_NAUGHTYNESS:FeatureFlag = "FEATURE_NAUGHTYNESS"; @@ -764,8 +773,11 @@ class Project extends HXProject // Should be true only on mobile builds. FEATURE_TOUCH_CONTROLS.apply(this, isMobile()); - // Should be true on everything other than mobile. - FEATURE_NAUGHTYNESS.apply(this, !isMobile()); + // Should be true on mobile builds. + MOBILE_CENSORSHIP.apply(this, isMobile()); + + // Should be true on everything. + FEATURE_NAUGHTYNESS.apply(this, true); // Should be true only on mobile release builds. Remember you can add the flag manually for testing. FEATURE_MOBILE_ADVERTISEMENTS.apply(this, (isMobile() && isRelease() && envConfig != null)); diff --git a/source/funkin/Preferences.hx b/source/funkin/Preferences.hx index c8843e8d5..196e5bd93 100644 --- a/source/funkin/Preferences.hx +++ b/source/funkin/Preferences.hx @@ -65,6 +65,10 @@ class Preferences static function set_naughtyness(value:Bool):Bool { + #if NO_FEATURE_NAUGHTYNESS + value = false; + #end + var save:Save = Save.instance; save.options.naughtyness = value; save.flush(); diff --git a/source/funkin/util/Constants.hx b/source/funkin/util/Constants.hx index 9a998f073..0367e2646 100644 --- a/source/funkin/util/Constants.hx +++ b/source/funkin/util/Constants.hx @@ -559,6 +559,11 @@ class Constants public static final GHOST_TAP_DELAY:Float = 3 / 8; #end + /** + * Otherwise known as "The FuckCunt Variable" + */ + public static final MOBILE_CENSORSHIP:Bool = #if (MOBILE_CENSORSHIP || NO_FEATURE_NAUGHTYNESS) true #else false #end; + /** * The maximum number of previous file paths for the Chart Editor to remember. */ From 5cbea2851c714429bb29bb89155330b0dcb373bd Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Wed, 11 Jun 2025 20:08:28 -0400 Subject: [PATCH 4/7] Update assets submodule --- assets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets b/assets index 066bc043e..671945166 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 066bc043e087a348453886ef1f7c25e948f79e90 +Subproject commit 671945166f44142aae92a2ac586aee8d5f6baf7f From d8a6abc48dc83901699ed070f141ecfb8fc9523f Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Wed, 11 Jun 2025 20:32:17 -0400 Subject: [PATCH 5/7] Rename the variable to CENSOR_EXPLETIVES --- project.hxp | 12 +++++++----- source/funkin/util/Constants.hx | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/project.hxp b/project.hxp index 092dc7ed1..1c1c31b68 100644 --- a/project.hxp +++ b/project.hxp @@ -211,12 +211,14 @@ class Project extends HXProject static final UNLOCK_EVERYTHING:FeatureFlag = "UNLOCK_EVERYTHING"; /** - * `-DMOBILE_CENSORSHIP` - * The Android platform specifically dislikes the words "fuck" and "cunt", - * but "cock", implied nudity/covered sex, etc. are fine, so fully disabling naughtyness is overly broad. - * If this flag is enabled, some censorship will be applied to the game even if naughtyness is on. + * `-DCENSOR_EXPLETIVES` + * If enabled, specifically disable "sexual explitives" in the game. + * This will forcibly censor these words (even if naughtyness is enabled), while leaving other swears. + * + * NOTE: This is needed because the Android platform specifically hates "fuck" and "cunt", + * but is fine with other naughtyness such as "cock", "asshole", implied sex, cigarettes, etc. */ - static final MOBILE_CENSORSHIP:FeatureFlag = "MOBILE_CENSORSHIP"; + static final CENSOR_EXPLETIVES:FeatureFlag = "CENSOR_EXPLETIVES"; /** * `-DFEATURE_DEBUG_FUNCTIONS` diff --git a/source/funkin/util/Constants.hx b/source/funkin/util/Constants.hx index 0367e2646..8de4cc983 100644 --- a/source/funkin/util/Constants.hx +++ b/source/funkin/util/Constants.hx @@ -562,7 +562,7 @@ class Constants /** * Otherwise known as "The FuckCunt Variable" */ - public static final MOBILE_CENSORSHIP:Bool = #if (MOBILE_CENSORSHIP || NO_FEATURE_NAUGHTYNESS) true #else false #end; + public static final CENSOR_EXPLETIVES:Bool = #if CENSOR_EXPLETIVES true #else false #end; /** * The maximum number of previous file paths for the Chart Editor to remember. From 5c2cc823404d48d4fc70def1d830a861f2d52d37 Mon Sep 17 00:00:00 2001 From: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> Date: Thu, 12 Jun 2025 12:59:24 -0500 Subject: [PATCH 6/7] missed a spot --- project.hxp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.hxp b/project.hxp index 1c1c31b68..c9b6b57ab 100644 --- a/project.hxp +++ b/project.hxp @@ -776,7 +776,7 @@ class Project extends HXProject FEATURE_TOUCH_CONTROLS.apply(this, isMobile()); // Should be true on mobile builds. - MOBILE_CENSORSHIP.apply(this, isMobile()); + CENSOR_EXPLETIVES.apply(this, isMobile()); // Should be true on everything. FEATURE_NAUGHTYNESS.apply(this, true); From 80948ba4ada6653f62048c6b0f7a0867148f2cea Mon Sep 17 00:00:00 2001 From: Abnormal <86753001+AbnormalPoof@users.noreply.github.com> Date: Fri, 13 Jun 2025 21:26:21 -0500 Subject: [PATCH 7/7] update assets submod to fix missing imports --- assets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets b/assets index 671945166..89031afbc 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 671945166f44142aae92a2ac586aee8d5f6baf7f +Subproject commit 89031afbcaaba31e860cc2a595206d57089c8224