Others [Moon Rhapsody mod] New animations + cheats

JoeTermin

Member
Dec 24, 2017
294
1,393
I am currently getting this error. Anyone know how to fix it? View attachment 4944581 View attachment 4944581
Are you sure you properly copied all the mod files, including the data.win? This usually happens if you use someone else's data.win (you need to use mine). Otherwise please send me your logs/modlog.txt so I can tell which animation is missing.

PS: if you don't mind, I'm deleting the previous message so that the update notice stays at the top of the page.
 
  • Like
Reactions: SlimMojo

JoeTermin

Member
Dec 24, 2017
294
1,393
Update mod version 1.3

Mega link updated in the main thread.

Changes:
  • Added Artix0 's Color mod version 0.4.

  • Added Artix0 's new sex-scene for Nyx X Ghost Hand as optional variant (50% chance):
    View attachment nyx.mp4













  • Added mk40 's variants : subtle, boobs/panties slightly more exposed during atk animations (Sasha)

  • Added 2 requested features:
    • Press U to tie/untie Sasha's hair
    • Increase the duration of sex animations in the config file (increase rapetimer_extend in the modconfig.json file included with this mod).
 
Last edited:

xiao1243

Newbie
Dec 16, 2023
28
24
I hope I'm not bothering you, but I was wondering if you have the zip file uploaded to another page.
Mega is asking for space, but I don't have any left.
 

mk40

Member
Jul 23, 2018
331
534
JoeTermin, I was wondering, would it be possible to change the duration of the timer for the ending animations? I'd like to experiment with extending some of the ending scenes, but it's not possible as it fade to black before it reachs the last sprites. There is even cases (for example "spr_H_Basilisk_capture_end") where by default it doesn't finish on the last sprite that was set on the vanilla animation.

If it's doable, it could be interesting to be able to tweak these value to be able tweak/extended some of the ending scenes. Though, a timer for each ending will be necessary as it's not something unified across all animations.

Or maybe another solution would be to completly disable these timers so the game wait for the last sprite before fading to black? But I'm guessing it would probably broke things.
 
Last edited:

JoeTermin

Member
Dec 24, 2017
294
1,393
JoeTermin, I was wondering, would it be possible to change the duration of the timer for the ending animations? I'd like to experiment with extending some of the ending scenes, but it's not possible as it fade to black before it reachs the last sprites. There is even cases (for example "spr_H_Basilisk_capture_end") where by default it doesn't finish on the last sprite that was set on the vanilla animation.

If it's doable, it could be interesting to be able to tweak these value to be able tweak/extended some of the ending scenes. Though, a timer for each ending will be necessary as it's not something unified across all animations.

Or maybe another solution would be to completly disable these timers so the game wait for the last sprite before fading to black? But I'm guessing it would probably broke things.
Here is a CE table, from which you can access a lot of game variables

It is a bit messy and not easy to use, but very powerful, it basically allows you to find and edit most of the game variables. To toggle it, start the game and load a save, open the table with Cheat Engine, attach the game to it, then click the boxes in this order: "Gamemaker" (loading), "Tool" -> "Dump Object" (loading), "Create Memory Record" then you will have the list of game objects (for example obj_Undead, obj_Sasha etc.) and global variables under "BaseGame". For example the max HP is there below "BaseGame->maxhp".

1754673647982.png

From there you can play with these variables and combine them with other CE features like Pause / Freeze variable etc. to explore what needs to be done to achieve a specific functionality. Once you manage to find which variables and what values should be edited, I can automate that in the dll (basically you just need to tell me variable X needs to be changed to Y when Z happens and I can add that to the .exe directly). I don't know how familiar you are with CE, if you're not then I'd say take some time to do the CE tutorial first (CE is a great tool to learn anyway it allows you to mod all games not just to Moon Rhapsody). You can mostly skip the sections about pointers and auto-assemble in the tutorial but know that I use them a lot (especially auto-assemble).

Let's take H-scene duration for example, if you inspect at the variables values as the game evolves (by pausing during H-scenes) you will very quickly realize the one controlling H-scene length is "BaseGame->cumlevel". It starts at 0 then increases while the heroine gets raped, and once it reaches a certain threshold it triggers the climax scene (the threshold is around 5 but seems to depend on the enemy). Now you can freeze "BaseGame->cumlevel" in CE, and you'll notice the H-scene goes on forever, so we can use it to extend H-scenes. This is actually what I did in the latest version of the dll I introduced this new config in the JSON "rapetimer_extend" which does just that, it basically just resets "cumlevel" to 0 a few times before it reaches the threashold, it does it N times, calibrated so that it extends the H-scene by N seconds (It would be cleaner to set the threshold directly to the H-scene duration we want but I didn't find the variable for it so I came up with this workaround, however this might be what causes bugged H-scenes for certain enemies that somebody reported earlier, maybe I need to reconsider this method). Unfortunately, I don't have time to play with it myself to find what is the right variable to edit / where the threshold is defined, but with the CE table you should be able to do it. This is for H-scene length not climax length, I haven't looked at the latter, but maybe try freezing "cumlevel" after climax and see if it extends it, it might be controlled by the same variable. Or maybe it's a different variable, try looking at the variables below "obj_screenKO" or "obj_gameover" (if you can't find the variable let me know as I maybe have a trick to find it).

Attached is also a very useful table with the function addresses (so you can place breakpoints but maybe it's a bit too advanced for now).
 
  • Heart
  • Like
Reactions: Artix0 and SlimMojo

mk40

Member
Jul 23, 2018
331
534
Here is a CE table, from which you can access a lot of game variables

It is a bit messy and not easy to use, but very powerful, it basically allows you to find and edit most of the game variables. To toggle it, start the game and load a save, open the table with Cheat Engine, attach the game to it, then click the boxes in this order: "Gamemaker" (loading), "Tool" -> "Dump Object" (loading), "Create Memory Record" then you will have the list of game objects (for example obj_Undead, obj_Sasha etc.) and global variables under "BaseGame". For example the max HP is there below "BaseGame->maxhp".

View attachment 5125150

From there you can play with these variables and combine them with other CE features like Pause / Freeze variable etc. to explore what needs to be done to achieve a specific functionality. Once you manage to find which variables and what values should be edited, I can automate that in the dll (basically you just need to tell me variable X needs to be changed to Y when Z happens and I can add that to the .exe directly). I don't know how familiar you are with CE, if you're not then I'd say take some time to do the CE tutorial first (CE is a great tool to learn anyway it allows you to mod all games not just to Moon Rhapsody). You can mostly skip the sections about pointers and auto-assemble in the tutorial but know that I use them a lot (especially auto-assemble).

Let's take H-scene duration for example, if you inspect at the variables values as the game evolves (by pausing during H-scenes) you will very quickly realize the one controlling H-scene length is "BaseGame->cumlevel". It starts at 0 then increases while the heroine gets raped, and once it reaches a certain threshold it triggers the climax scene (the threshold is around 5 but seems to depend on the enemy). Now you can freeze "BaseGame->cumlevel" in CE, and you'll notice the H-scene goes on forever, so we can use it to extend H-scenes. This is actually what I did in the latest version of the dll I introduced this new config in the JSON "rapetimer_extend" which does just that, it basically just resets "cumlevel" to 0 a few times before it reaches the threashold, it does it N times, calibrated so that it extends the H-scene by N seconds (It would be cleaner to set the threshold directly to the H-scene duration we want but I didn't find the variable for it so I came up with this workaround, however this might be what causes bugged H-scenes for certain enemies that somebody reported earlier, maybe I need to reconsider this method). Unfortunately, I don't have time to play with it myself to find what is the right variable to edit / where the threshold is defined, but with the CE table you should be able to do it. This is for H-scene length not climax length, I haven't looked at the latter, but maybe try freezing "cumlevel" after climax and see if it extends it, it might be controlled by the same variable. Or maybe it's a different variable, try looking at the variables below "obj_screenKO" or "obj_gameover" (if you can't find the variable let me know as I maybe have a trick to find it).

Attached is also a very useful table with the function addresses (so you can place breakpoints but maybe it's a bit too advanced for now).
I'm getting this error when loading your .ct file:
1754679081616.png


I'll give a try but there is a very high chance I'll completly fail to make sense of all of this. :ROFLMAO:
 

JoeTermin

Member
Dec 24, 2017
294
1,393
I'm getting this error when loading your .ct file:
View attachment 5125425


I'll give a try but there is a very high chance I'll completly fail to make sense of all of this. :ROFLMAO:
Hmm this is not a good sign, and is a rather obscure error, I think it means it failed to recognize the game. Do you get it immediately when loading the table ("Load"), without clicking the boxes? actually maybe I gave you the instructions wrong, you need to first attach CE to the game, then click "Load" and select the cheat table, maybe it'll work better in this order (although both orders work for me).

You can also try to start CE as admin.

Also make sure you run the "Moon Rhapsody.exe" v3.1.3 exe that I distributed in my mod, and not the original exe (the cheat table is for the modded exe) - although again both at least load the table successfully for me.

If it still gives the same error, this sometimes happens as our systems are different (Windows/libraries version etc.) so I would need more info (if you can try to find which line triggers this "attempts to perform arithmetic on nil value")

EDIT: also try a recent CE version (7.5 or 7.6)
 
Last edited:

mk40

Member
Jul 23, 2018
331
534
The error I posted earlier was indeed because I loaded the .ct file before attaching the game to it.

It is a bit messy and not easy to use, but very powerful, it basically allows you to find and edit most of the game variables. To toggle it, start the game and load a save, open the table with Cheat Engine, attach the game to it, then click the boxes in this order: "Gamemaker" (loading), "Tool" -> "Dump Object" (loading), "Create Memory Record" then you will have the list of game objects (for example obj_Undead, obj_Sasha etc.) and global variables under "BaseGame". For example the max HP is there below "BaseGame->maxhp".
A bit messy is an understatement at this point, each time I had attempted to use cheat engine to do something a bit complex, I fail completly... and well, as expected, this time isn't different.

I checked "Gamemaker" (it does something the in the Lua Engine window) then proceed to check "Dump Object" under "Tool" and it doesn't do anything, nothing work on my end. As valuable and usefull as it is, I just hate cheat engine.
 
Last edited:

JoeTermin

Member
Dec 24, 2017
294
1,393
The error I posted earlier was indeed because I loaded the .ct file before attaching the game to it.



A bit messy is an understatement at this point, each time I had attempted to use cheat engine to do something a bit complex, I fail completly... and well, as expected, this time isn't different.

I checked "Gamemaker" (it does something the in the Lua Engine window) then proceed to check "Dump Object" under "Tool" and it doesn't do anything, nothing work on my end. As valuable and usefull as it is, I just hate cheat engine.
CE is always empirical science, it might be just one small thing that is different on your computer that I didn't think of when making the table, I'd bet 95% of it is working and it's just a small thing or two that we're missing.

Especially if it went past the "GameMaker" stage then it means you are extremely close for it to work (the expected behavior for this step is, after you click the box the lua window should print random stuff for 5 sec, then for 0.5 sec it will print a long list of "obj_xyz" and then almost immediatly close itself).

95% of the actual work is done in this "GameMaker" step, then the remaining 5% under "Dump Object" is just to reorganize the information but yeah unfortunately to debug why that 5% doesn't work I would probably need to try several things. I'd recommend to try the whole process one more time though as sometimes the cheat table can randomly fail to work (rare but restarting the game or your computer fixes it - it also helps to load a MR save and not just stay in menu) and maybe try to click all the boxes as some of them have different heuristics. You'll know it works if you see a bunch of "obj_xyz" things under "Create Memory Record" like I shared in the screenshot above.
 

HoopZoop

New Member
Nov 27, 2020
1
0
Just wondering. Does anyone have a save file with the full gallery? It'd be really cool to see every new feature the mod introduced into the game.