MonsterGirlQuest Wiki

This wiki will close in two weeks (Wednesday November 24). Fandom is removing wikis on topics that contain large amounts of sex, nudity and/or fetish material. Even if the wiki itself is kept "clean", we are still unable to host it.

The two week's pause is so you can look for a new host and copy your content there.

I'm sorry for the bad news -- Sannse

READ MORE

MonsterGirlQuest Wiki

Script Fix

Download the current version.

Unpack the file to the gamedir. The file 0.txt must be in the same dir as mon_que.exe.

Run the game.

If you find any bug/visual glitch/potential improvement - use bugfixes this forum to report. I will try to fix...

GC345 (talk) 17:32, January 13, 2014 (UTC)

Welcome

Hi, welcome to MonsterGirlQuest Wiki! Thanks for your edit to the Tamamo page.

Please leave a message on my talk page if I can help with anything! Shadowblade777 (talk) 15:28, November 25, 2013 (UTC)

Script Fix: Fully Functional English Side Stories For Monster Girl Quest Part 3

Hello, GC345. I am TheGreatHeinrich, the guy who helped fix up the text display in the Monster Girl Quest Part 2 English patch. I see that you are continuously fixing the Monster Girl Quest Part 3 script after Rogue posted the last official English patch, and I would like to assist.

I downloaded your latest version of the English script (6 January 2014--check to see if you made any fixes after this because I didn't take that into account!) for Monster Girl Quest Part 3 and have made a few changes on my own. I don't know if I caught everything I wanted to yet. This includes:

  • Making the Side Story module fully functional in English, including all the battle code.
    • Note: I haven't fully tested it yet. I took the working code from the English version of Monster Girl Quest Part 2 that had some extra features and put them into Monster Girl Quest Part 3. This includes the "@" and "\" at the end of each line of dialogue (this is completely optional).
  • Rewording the generic battle text to make everything gender neutral. This allows side stories to have a protagonist and/or enemies of either gender without forcing the protagonist to be male and the enemy to be female.
  • Fixing the battle window of Side Story battles with a protagonist other than Luka. For example, the Cecil Side Story.

I wish to add more fixes, but for now I think this will suffice. If you have any questions, please message me on my talk page. Here is the file: http://www.mediafire.com/download/85ykhc0ie3jr0rd/0.zip


The other huge thing I would like to do is make all strings that display using the "lsp" command not have to use a double-width space. I don't know how to explain this very well, but I will try. Back when Monster Girl Quest Part 2 was machine-translated, the guy added a function that inserted the BEL character (in the ASCII table , this is character code 7) in place of a space, so this in Rogue's script, for example:

  • if %skill01>0 lsp 301,":s/20,20,0;#FFFFFFJump at the enemy, and slash at their neck. ",50,450

would have all the spaces be replaced with the BEL character. This can only be done on Notepad++. The result is that the output in-game would appear to have spaces.

However, instead of inserting these characters this in the actual script, I have another idea. NScripter can be modded by writing Lua code. I created a small Lua file that takes any strings to be displayed by the "lsp" command, automatically replace all spaces with BEL characters, and automatically append a space to the end if need be so that NScripter doesn't randomly chew up the last character. All you need to do is place this file into the same folder as the mon_que.exe file. The catch: All "lsp" strings in the game script must be changed so that no instance of double-width (16-bit) characters exist; they should all really be single-width (8-bit) ASCII characters.

The benefits: You don't need to append a space to the end of every string any more, and you don't need to worry about NScripter eating up a space randomly. This includes Side Stories, which are probably what the majority of users will be touching.

The downsides: If the user is using a different font than what I am using, the spaces may appear as dots instead of spaces. I don't know how to fix this because I cannot reproduce this bug.

I'm in the middle of it and it should be done pretty soon, but for now I want to get the Side Stories to be fully compatible with Monster Girl Quest Part 3.

TheGreatHeinrich (talk) 17:06, January 7, 2014 (UTC)

Tnx for this fix and especially for the changelog.

I will add neutral gender, missed translations and eng $sel1:$sel6\ immediatedly. Others fixes - just a little later. After I try to understand how this Side Story block is working...

And tnx to the hint about Meditation.

Unfortunatedly there is no result for placing BEL. I have used Far Manager to insert this 0x0007 character. The result is this.

GC345 (talk) 18:49, January 7, 2014 (UTC)

I see. In that case, I don't know what else to do. Can you upload a copy of the game script you used in that screenshot? I'd like to look at it, if nothing else.

TheGreatHeinrich (talk) 19:11, January 7, 2014 (UTC)

It was just the Rogue's final patch with 2 edited strings. Have uploaded it on the hosting. P.S. Mon_que.exe crc32 is 7de2462b.

I will be happy if the trouble is on my side and there is a way to fix lsp in the nscripter version from MGQ3 english patch. I have tested onscripter-en with this game, but this branch can't work correctly with goto "*"+$lavel+"_a" construction. It looks like the + priority is too low. Only the mov $1,"*"+$lavel+"_a":goto $1 is working... And these gotos are the cornerstone of MGQ3 script...

GC345 (talk) 22:52, January 7, 2014 (UTC)

I did some more tinkering with Lua and I think I finally fixed the lsp string display. It still requires a Lua file to be placed in the same directory as the executable, and also it still requires a bunch of text in the game script to be fixed, for example:

  • No more ideographic spaces (\u3000): These are replaced with regular spaces
  • No more fullwidth Unicode characters mixed with halfwidth ASCII characters
  • (optional) No more spaces at the end


Also, was the "namecut" and "ori_nnn" name thing necessary? All you had to do was get rid of the space after the names in "ori_name" and "temp_name" without writing any new code. The only things that might still be affected are the side stories with custom battles, but for each battle you only change 2 things: the hero's name and the enemy's name.

Anyway, thanks for applying the fixes. That long code you see with the side story (the one with "mon_labo_mon_ini_cmd") is the one I used in Monster Girl Quest Part 2 before Rogue introduced Cecil's Adventure. I tested it and it should work with every side story.

TheGreatHeinrich (talk) 13:25, January 8, 2014 (UTC)

> Also, was the "namecut" and "ori_nnn" name thing necessary? All you had to do was get rid of the space after the names in "ori_name" and "temp_name" without writing any new code. The only things that might still be affected are the side stories with custom battles, but for each battle you only change 2 things: the hero's name and the enemy's name.

Yes, the best way is to define the function, not the subroutine. Something like string ori_nnn(void). But I have not found the functions definition in a NScripter documentation... Subroutine only. So I was forced to use extra variable.

Why not to edit $ori_name value itself? Unfortunatedly the game uses $ori_name as the argument for *name subroutine (uses lsp command). As the result - end space and ideographic spaces are still needed... Even if lsp will be fixed - there are already many mods with the classic strings format (space at the end).

I have deleted ideographic spaces from mov $ori_name,"Alma Elma " and mov $ori_name,"Tamamo no Mae" commands only where name $ori_name is 100% not used.

>No more ideographic spaces (\u3000): These are replaced with regular spaces. No more fullwidth Unicode characters mixed with halfwidth ASCII characters...

The first will be excellent. 0x3000 can/must be used only in full-width strings. And will be ignored/break the script execution in the half-width strings. Same for a regular space - can be used for half-width strings only and ignored/cause an error in the full-width lsp variant... Maybe the standard NSCripter's > may be used to force 1-byte mode, then the script will be easy portable to ONScripter/PONScripter...

The second is widely used in Monsterpedia and status screen. But can be fixed by loading two sprites. One with half-width characters, one with full width characters... And again - the script will be more structurised/strict. Good thing.

GC345 (talk) 15:32, January 8, 2014 (UTC)

>Why not to edit $ori_name value itself? Unfortunatedly the game uses $ori_name as the argument for *name subroutine (uses lsp command). As the result - end space and ideographic spaces are still needed... Even if lsp will be fixed - there are already many mods with the classic strings format (space at the end).

Even so, it is still better for future editing and side stories if users can use proper English strings as they would in any other programming language. I didn't mention this before, but way way back in the Monster Girl Quest Part 2 English patch, I actually fixed the "*name" subroutine to automatically append a space at the end so you don't have to worry about it. The fix is still there even in the Part 3 patch.

About the bolded part: The space at the end only matters in a battle. There are few side stories out there with battles, and this is hardly a concern anyway because there are exactly two places where the space at the end actually matters (because the names are used with battle text that is shown in the window). Let's look at Cecil's Adventure's Alra Nepenthes battle. Within the "story.ini" file located in the "mod\Cecil\Alra" folder:

  • [data] section, line 178:
    • name="Alra Nepenthes " //should be changed to:
    • name="Alra Nepenthes"
  • [ruka] section, line 195:
    • name="Cecil " //should be changed to:
    • name="Cecil"

These are the only two things that should be changed. Everything else is trivial.

I still feel that "namecut" and "ori_nnn" are completely unnecessary. All they do is clutter up the script and serve only to solidify the use of incorrect syntax; the space at the end of everything should not be needed at all. If you revert to a version of the script that doesn't have those, but has everything else, I would be glad to clean up all the text used by "lsp" and send you my copy of the Lua file that fixes "lsp" string display.

TheGreatHeinrich (talk) 21:22, January 8, 2014 (UTC)

Done. Mov $ori_name argument is always without the ending space, this space is moved to messages. Namecut and $ori_nnn are removed.

About the lsp - IIRC NScripter uses Shift JIS or OEM 932. All full-width japan characters have the first bit as 1. And have a constant width - 2 spaces. So - it looks like lsp may works with mixed half/full width strings. The only trouble is - there are japan symbols coded by 1 byte (A1-DF)...

GC345 (talk) 23:29, January 8, 2014 (UTC)

Here it is: http://www.mediafire.com/download/msgw1xsg3tctd2j/0.zip

Basically, what the Lua file does is take a string to be displayed by "lsp" and instead uses "strsp" to display it. The "strsp" command actually correctly displays English text.

I didn't remove the space at the end of most strings because I found the process unnecessary and tedious. I only changed the ones that use $name, $name2, and $temp_name as a variable. Just know now that you don't have to do put an extra space at the end of any string any more with this "system.lua" file in effect.

I had to fix some strings that had a mix of halfwidth and fullwidth characters in them. They were mainly under the right-click menu, the Records display, and the Monsterpedia.

I can only guarantee that this works for this version (and any future versions based on this version) of the "nscript.dat" file. Any re-patches or alternate/previous versions of the game that require a new "nscript.dat" file migh have its "lsp" strings butchered; simply removing or renaming the system.lua file should fix this.

Again, the side stories are independent of this fix and should be dealt with separately. It's not game-breaking, but it does look awkward with that space at the end of the name. It shouldn't be too bad if nothing is done.

If I missed anything, or if any horrible bugs come up, let me know so I can deal with them.

TheGreatHeinrich (talk) 03:02, January 9, 2014 (UTC)

Now that I think about it, the Lua file might not even be necessary because it's just using another command. If I could somehow replace every instance of "lsp" string display with "strsp" directly in the script, that could avoid conflicts with other "nscript.dat" files, though this would require a massive amount of changes in the script. Until then, the Lua file is the quick and easy solution I wrote up.

TheGreatHeinrich (talk) 03:48, January 9, 2014 (UTC)

Tnx for the Idea about strsp.

You don't need to replace ALL lsps. To fix *name and *skillname subroutines with strsp - and 40% of the work are done. To fix *zukan_commondata and another 40% are done. I will try this method, w/o LUA.

Chapter 3 Requestable Techniques

Hey GC345,

I downloaded the edits you posted today; (I had not applied the previous .txt file you posted though), and wanted to ask for help. I am driving myself crazy trying to find what I missed in the final chapter; as all the techniques are filled in in the monsterpedia but I can't for the life of me figure out what I am missing. Do you think you could help in any way?

Zaiku K (talk) 19:00, January 13, 2014 (UTC)Zaiku

Send your's global.sav to my email (trisgl@pochta.ru), I will try to find the trouble...

GC345 (talk) 23:40, January 13, 2014 (UTC)

Sent as of yesterday. I know you are working on bugfixes in general and I'm not stupid enough to think my issue takes priority. Let me know if you find anything when you have time. If I can return the favor in some way; please feel free to ask. Thanks!

Zaiku K (talk) 20:45, January 14, 2014 (UTC) Zaiku_K

I have looked for the source of this problem.

For the "Hit by all requestable Chapter 3 techs" achievement the game just checks the %count_oskill3 value. This value will be incremented if the requested tech hits Luka 1st time:

*skillcount3

getparam %skill_num
if %%skill_num=0 mov %count_oskill3, %count_oskill3+1
inc %%skill_num
return

Theoretically all is working, practically - if %count_oskill3 is altered somehow - there is no way to detect/fix this. In your case - all needed tech variables (443 numbers) are above zero. But the counter is just 442.

I will recheck the script, maybe there is a place where tech variable is altered not in this counter... But the only complete solution is to check skill variables, not %count_oskill3.

GC345 (talk) 06:39, January 15, 2014 (UTC)

So I was correct in that everything was hit... Cool! That answers my question. I was driving myself crazy trying to find what I missed. I really appreciate you taking the time to help me out. You rock!

Zaiku K (talk) 06:43, January 15, 2014 (UTC)

Ok, the resulting Chapter 3 check is not so big, because almost all skill variable numbers are continuous:

mov %name_count,0
if %3383>0 inc %name_count
if %3660>0 inc %name_count
for %move=3669 to 3738
if %%move>0 inc %name_count
next
for %move=3763 to 3982
if %%move>0 inc %name_count
next
for %move=3985 to 3998
if %%move>0 inc %name_count
next
for %move=4000 to 4136
if %%move>0 inc %name_count
next

I had used %move and %name_count because these variables are already defined...

For your's gloval.sav the result is 443.

GC345 (talk) 17:29, January 15, 2014 (UTC)

Oh... Sorry to ask, but what does that mean? In the previous post you said there are 443 tech variables and my gloval had all the variables >0 but registered only 442 techniques, while in this one; you are saying the result of this other check is 443. Does that mean that the achievement itself seems to have glitched? Again; sorry to ask after you have already helped so much.

Zaiku K (talk) 18:12, January 15, 2014 (UTC)