Ouch! So many beauties! 哎呦!这么多美女呀! (Steam) - English Patch
Version 2026.09.21
For Build 24545293

SETUP
------------------------

1. Copy ZIP file to "\Steam\steamapps\common\ManyBeauties" and Extract Here
	(It will ask to replace existing files, just say YES to ALL)
2. Play the game

If you are using Windows 11 zip Extract All, extract into "\Steam\steamapps\common\ManyBeauties"

You can find this folder in Steam by doing the following:
Go to Library, Right Click on the Game > Properties > Installed Files > BROWSE. 
This is where the zip belongs.

SUPPORTED CONTENT (English)
------------------------

	Subtitles
	Choices
	Main Menu
	Settings
	Storyline
	Character Bios
	Archive
	Message prompts
	Chapter 7 full timeline
	(NEW) Favor popups
	(NEW) Ending scenes
		
ABSENT
------------------------

	N/A


SCOPE OF WORKS
------------------------

	SUBTITLES
		Replaced with LLM conversions + hand edits + added some for text on videos.
		62 new or hand-modified subtitles from the LLM conversions. (280 total but some are not used)
		Added NEW subs for 744 (mengyao bed), 1446 (group feed end), 624 (yu xia letter). Added subs for all text on screen.
	SUBTITLE FONT
		Replaces the subtitle font with NotoSansCJK + custom renderer for outline and shadow.
	UI IMAGES
		108 images: 95 translated and replaced inside bundles. Plus 6 new play buttons. 7 images for video clips (2 are renamed) on timeline.
		Chapter title text (e.g. "Who are you?") are new and creative license. 
	GAMECONFIG
		Replaces the online config with a local version (GameConfig/GameConfig.json). Chinese backup GameConfig_cn.json is original, no modifications.
		Loads a handful of translated strings from (GameConfig/GameStrings.json).
	ADDS FAVOR / AFFECTION POPUP
		Favor values already exist in game files but are invisible. No change was made to their values.
		This mod now displays them with custom popup. Saving values was broken too as it would keep adding if you reselected a branch.
		New regular checks ensure values are correct.
		Favor values are now used for endings, the new(!) ending scenes require approx 90% max favor to get.
	RECONFIGURES CHAPTER 7 AND ADDS IT TO THE TIMELINE
		ADDS 24:58 of content that is not available in the Steam version. About 13 minutes of unused footage restored, likely not in the Epic version.
		(NEW) 1444 (1443 vid) [3:30] photoshoot "lingerie" ending added for mengjiao reconsider - was not in config
		(NEW) 622 [1:16] bad ending added for mengjiao - was not in the config
		(NEW) 741 [1:40] red dress (high affection) end for yu xia - was not in config
		(NEW) 734 [2:59] white negligee (high affection) end for sun qian - was not in config
		(NEW) 745 [3:41] lying in bed (high affection) end for zhao mangyao, has subtitles - was not in config
		615 [2:04] su wei leave ending now connected to alone path if her affection sufficient - was unconnected in the config	
		Changed jump logic so the below "reconsider" group endings can be seen via reconsider options.
		611 [4:50] / 612 [5:28] can now be seen in the Steam version, was previously inaccessible due to code flaw.			
	CODE CHANGES
		Makes necessary changes to use the local config file. String json for prompts, some fixes, and new subtitle renderer.
		See below for more detailed information on various code changes.

Note: Selecting Chinese in settings will revert subtitle font to original and reload the original choices and branches etc, but UI will remain English.
If you don't like the new font or have issues with it. Put EN subtitles in CN folder and rename GameConfig.json to GameConfig_cn.json.


VERSION HISTORY
------------------------

	Version 2026.07.21
		First release. Full translation, checked and tested to 100%


POSSIBLE FUTURE UPDATES
------------------------

	Replace choice and storyline text with different font so it supports more languages.

	Add native support for other languages. JP, DE, RU already in code, so do those first. Via settings somehow (clone switch button items?)
	
	ADD OFFLINE MODE - This game is heavily online. Gets initial config. Pings. Video Keys. Some parts can be removed.
	Would need to get and store video keys in an offline file (binary?) and load into memory on start.
	Hardcode a userid since the keys are likely transposed based on the userid sent (steam id), or let users build their own cache??
	mp4 videos can be decoded very easily and are visible in temp. mi7 is less transparent. But it is easier just to save keys and let game do the work.
	Gracefully deal with server going down rather than force offline? Remove the kill switch code.


GUIDE TO MAKE YOUR OWN EDITS
------------------------
	
	GameConfig/GameConfig.json - Title and Text fields are what you need to alter Storyline and Choices. (it auto reloads when you switch languages)
		NOTE THIS FILE REQUIRES GB2312 ENCODING!!!!

	GameStrings.json - Edit the values for all keys to change prompt text and character names.



Assembly-CSharp.dll - SUMMARY OF MODIFIED CODE
------------------------

NEW CLASS 
TranslationManager
1. Gets a text string and translates it against the string JSON 
2. Manages switching languages from Chinese to English, using files 
USES THESE FILES: GameConfig/GameStrings.json, GameConfig/GameConfig.json, GameConfig/GameConfig_cn.json

NEW CLASS 
CustomSubtitleRenderer
*for EN, it replaces existing subtitle renderer (captions) with text based on that uses a FONT TTF, not SDF
*Renders multiple copies of the text to create outline and shadow. 

NEW CLASS 
ShowLove
Displays favor +1/+2 value popups of the character variables that already exist in the code but were unused. Favor values unchanged.
Uses translation manager for names (hardcoded in Chinese because that is what the devs would have wanted)
Shows total hearts for everybody at the last choice video (610).


FIXES / IMPROVEMENTS
GameVideoPlayer - LoadCaptions() placed at the end of OnPlayKeyCallback to reduce situations where subtitles of the next video are shown briefly
OptionUI - Removes divide-by-zero error. Allows more characters on option buttons for EN language.
StorylineUI - IsShowFragment() will show chapter 8 fragments (i.e. endings) on the timeline if it is currently chapter 7. Otherwise chapter 7 is two nodes lol. 
GameArchives - RecalculateVariablesFromHistory() is a new method to ensure favor values are recalculated correctly. Variables WERE accumulative. Will fix existing save files. Called on fragment start
NetWork - Adds trigger to delete or load save GameArchives.json files. If \StreamingAssets\EraseGameArchives.json exists, create new (0% save). If \StreamingAssets\RestoreGameArchives.json exists, read and send.


OtherModified Classes
Loading - Passing strings to TranslationManager
ShowInfo - Passing strings to TranslationManager
MessageBox - Passing strings to TranslationManager
SettingUI - For updating the language setting in TranslationManager
GameVideoPlayer - For calling CustomSubtitleRenderer inside Update() and for passing strings to TranslationManager


CREATION INFO ESTIMATES
------------------------

15 hours converting images and creating templates.
5 hours messing with fonts and SDFs before changing direction.
15 hours changing code, including messing with video keys and debug configs.
10 hours adjusting the GameConfig to add new scenes, alter logic, alter timeline structure
20 hours playing to check subs and interface, logic etc.

-nutcrackr
nutcrackr#9172