User talk:GC345

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 this forum to report. I will try to fix...

Welcome
Hi, welcome to ! 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: 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
 * 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.

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: 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.
 * if %skill01>0 lsp 301,":s/20,20,0;#FFFFFFJump　at　the enemy, and slash at　their neck. ",50,450

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: These are the only two things that should be changed. Everything else is trivial.
 * [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"

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.

GC345 (talk) 02:11, January 21, 2014 (UTC)

The strsp patch is finished. 10 days of work... My previous message was too optimistic. You can grab the patch from this page.

GC345 (talk) 02:11, January 21, 2014 (UTC)

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)

Skills data of your's gloval.sav are correct but the counter is wrong. Unfortunatedly the Record page use counter and there is no integrity check (like the code above) in the game. I will add this check in my next patch so all similar errors will be corrected automatically.

GC345 (talk) 18:45, January 15, 2014 (UTC)

How to apply Fix
Hi ! I just want to know how to apply the 0.txt you made, because i don't find where or how im supposed to use it. Maybe its just im dumb, but still thank you.

(sorry if my english is poor, im french)

I hope GC doesn't mind but I thought I could save him some time. The 0.txt is applied automatically; as long as it is in the folder you run the mon_que.exe from. A good visual cue to see if it has applied correctly is to check chapter 3's monsterpedia and check to see if the "Cherub Wormiel" entry has been changed to "Cherub Vormiel". Otherwise you can test the bugs and make sure they aren't still there.

Zaiku K (talk) 21:02, January 17, 2014 (UTC)

Censored... Tnx, I will fix this typo...

GC345 (talk) 22:36, January 17, 2014 (UTC)

Oh! It was a typo? I assumed you were ahead of the curve. Like how Alma Elma's intermediate name was Aruemaeruma. Which I know is phonetic pronunciation using (r's) instead of (l's), and you knew something we didn't.

Zaiku K (talk) 23:08, January 17, 2014 (UTC)

My patch is visual/game mechanic only. I try not to edit translation itself except several obvious cases: "s's" (replaced to "s'"), "Eye of" ("Eyes of"), one "Alipheese" nametag ("Alice"), several "Witch Succubus" ("Succubus Witch"), "Underground Library" ("Basement Library as in Capter 1). So - all "Cherub Vormiel"s are just typos...

GC345 (talk) 04:52, January 18, 2014 (UTC)

Hey GC. Just spotted another spelling error; and didn't know exactly where to post it. In monsterpedia Alma Elma (Final) is misspelled as "Atma Elma". Just letting you know. Sorry for the trouble dude.

Zaiku K (talk) 20:41, January 18, 2014 (UTC)

Tnx.

GC345 (talk) 07:26, January 19, 2014 (UTC)