• Touhou 6 New Classic Score Attack Ongoing!

    Read the submission rules, prizes and everything inbetween here:

    Good luck!

    Also check out the community art event here! Everyone is welcome!

Fantasy Maiden Wars modding thread

kanedafanatic

Made more sense to put Tetsuo instead of Kaneda.
Made more sense to open it in this sub-forum instead of the Derivative Works one, given that it's related to modding.

Long story short: it's likely that FMW could have some baller-ass modding. Something that extends further on what's available/what people made already. S9-L/SQ-L made tools/patches for the game that allows to bring back unused/altered assets for characters (personal skills and attacks as far as I know), edit save files and addition/replacement of files (AddOns/modData folders respectively). With the help of SQ-L, Sanoi777 made a modding/extraction tool which has the possibility to, well... mod the game. However for that particular tool, it doesn't seem to work on my copies; the step involving the data.win patching gives me a checksum mismatch (XD3_INVALID_INPUT) on DeltaPatcher. Maybe for someone else that is interested, it could work on their end. Not only that, with the Undertale Mod Tool, the game's code can be edited. Possible things to do would be to implement new mechanics such as bigger maps, add new stages, replace animations and so on.

With the modData folder, the extracted game files from Sanoi777's tool can be used to experiment where SQ-L's AddOns' folder templates can't/haven't been implemented yet. Data used for stages (file: Data_Stage.txt) can be used using the modData folder to change values, where SQ-L's .json doesn't have it implemented yet.

On my end, I've been experimenting with that. I'm still a beginner but on my end, I've managed to change textures and images, text and dialog, enemies (X and Y values, unit/character ID, inert values such as HP/MP/Upgrades and so on) and music as far as I can remember. A majority of stuff that allows modding seems to be hidden within the game itself: where the usage of UMT is required (and someone who's familiar with UMT can instruct me on how to use it.)

---

Personal section: I have a love-hate relationship with this game. Like, I love building characters with it because the customization allows you to make really cool builds with generic skills and items. It's pleasing to look at, both for the character's animations and the maps themselves. However, I hate how this game is balanced. Difficulties are scripted: enemies are assigned by hand (data5-3) and AI behavior is gatekept between difficulties. A strategy game shouldn't restrict it's AI's full capabilities on the most hardest difficulty and should instead be handled by the player with a toggle. A strategy game on it's hardest difficulty shouldn't be forcing you to retry countless times, just to grind XP because that said difficulty was designed for NG+ more than anything else. Among other things, it's not perfect. FMW has a good baseplate to build upon because of it's assets, but the execution leaves to be desired.

So I thought that I could likely change the game to my likings. Adding a challenge mode similar to Project Wingman's Conquest Mode (I dunno how to explain it correctly: you conquer territories on this huge map. To conquer a territory, you do a "challenge", then a "boss" unit shows up and if you don't die, you get this territory) is one of them by using the maps and assets of the game. Change difficulty behavior to be scaled according to the player's loadout on start: if I want to play a solo run for example, I don't see why the game should be forcing me to DPS check every boss to catch their spell card with huge health pools when the AI can simply defend or use Spirit Commands wisely. However, if I have a LOT of units, then it makes sense to make the AI more resistant instead. Might as well say that I like building character but, FMW's scripted nature doesn't allow for much: overhauling the economy of this game with how Points, PP and WP are handled is something I'm subjecting to change. I could go further if I want: this game hold a lot of potential for modding, rather that it's barely talked about.

At the end, I've never finished the game. Stupid, I know: I'm more fixated on the game design and assets than the game itself.

(edit: I'm stupid, I forgot to add the reason why I'm making this whole thread. I also want to share the progress I'm doing.)
 
Last edited:
I'll give a update before going to sleep:

Given I dunno shit about JavaScript, I wanted to try something easy to understand what I'm doing, so I worked on making a QoL attempt on FMW4 Youmu, given with SQ-L's FMW patches.

Capture.webpyuu.webp

This time, I'll keep it short: SQ-L managed to bring back FMW4 Youmu through their AddOns folder and JavaScript. What changes between the current Youmu and the FM4 Youmu comes to her getting a free Afterimage buff (FMW4 = 25% Afterimage and Ghostly Wheel of Pain adding 20% more, DoSD = Youmu has none, but can gain 25% Afterimage ability with Ghostly Wheel of Pain personal skill), and lower Night terrain rating (FMW4 = B/0.90x, DoSD = A/1x)


Screenshot (56).webpScreenshot (57).webpScreenshot (58).webpScreenshot (59).webpScreenshot (60).webp

However, the way SQ-L implemented FMW4 Youmu was by adding her as a standalone unit. I think it makes no sense, lacks sprites in places and it make two Youmus instead of one. So the idea of making her into a variant instead felt easy enough to do but also challenging enough to understand the way AddOns work.

technical bullshit coming through:

The way this game handles characters is simple. Then again, I could be wrong at certain places. I'm no programmer or experienced modder.

Taking Youmu as an example again, the way this game processes characters is through three kinds of IDs: UnitIDs, UnitDataIDs and CharID (or CharDataID). the UnitID is the "container": here it would be named Youmu. Under the UnitID container, there's the UnitDataIDs: Youmu01, Youmu02 and Youmu03. Throughout the game, there are three different variants of Youmu used under the same unit ID. Finally, CharID is the "information" that the game looks for when you take the character. It's what allows Youmu to have her terrain ratings, stats, health and such. It's what makes the character, basically.

To also understand what SQ-L has done, I've used his own templates and took my time to copy and modify what he did on different JavaScript files.

Data_char_all is what makes the "characters"' skeleton. Stats like CQB and the 5 others, Spirit Points/Spirit Commands, their prices and their level requirement among the most important: that's there.

Data_char_skill_all is what your character has for skills at start. Konpaku's Measure and Instinct, for example, is there. It applies to both personal and generic skills too.

Data_unit_all is for the "organs" of the character. Armor, Mobility, HP, MP, Abilities, Unit cost and so on.

Finally, data_weapons_all is pretty much what it says: your characters' attacks as a whole.

As for the rest, it more or less matters. Data_Skills is the most important by far: it allows to dig or create new skills to be used by other characters under the AddOns folder pretty much.

What I did was pretty simple: I began with the Data_change script as it's there where loadouts can be changed, and I built from there. CharID and UnitDataID can be put underneath Youmu's UnitId in this file, and there you go: Youmu has her FMW4 loadout/variant.

Finally, there was an issue involving how to "switch back" to a previous loadout but, this can be fixed in Data_change by adding a second column where you put the UnitDataID and CharDataID as the same.

JavaScript:
{
  "Data_Change": {
    "Active": true,
    "AddOn": [
      {
        "Enabled": true,
        "UnitID": "Youmu",
        "UnitDataID": "Youmu01",
        "CharDataID": "FMW4Youmu01",
        "FlagID": [],
        "IsNGPlus": "0",
        "DenyList": []
      },
      {
        "Enabled": true,
        "UnitID": "Youmu",
        "UnitDataID": "FMW4Youmu01",
        "CharDataID": "FMW4Youmu01",
        "FlagID": [],
        "IsNGPlus": "0",
        "DenyList": []
      }
    ]
  }}

Forgot to mention: the DenyList function is a flag that allows or restrict the usage of the loadout. Specify the chapter numbers and the loadout will be locked in those chapters in particular.

Also, a minor issue is involving Intermission ace sprites. Because the game looks for the character's UnitDataID and then removes anything else after it, anything that goes outside the sprites name will be ignored. Basically: I should've named FMW4Youmu01 into something like Youmu04 in order to have sprites on the intermission screen since the game looks for sprites such as YoumuAce1.png to render on the screen.

However, I went the modData way by copying and editing the sprite names/Data_sprites text file. I Edited the text file to register FMW4Youmu as a registered ID that looks for picture that begin with FMW4Youmu in data15, for which those pictures have been copied.
Screenshot (64).webpScreenshot (66).webpScreenshot (67).webpScreenshot (68).webp

I'll release this to garner feedback and see if it works outside of my desktop. Preferably, running on 1.2.4.2 is the best way for it to work, as it is my version. It does require for anybody who wants to try that the game must be patched; SQ-L has documented the patches and how to install them on their GitHub page. After patching the game, enabling LayeredFS in the game is important too for sprites to update accordingly (or Youmu's sprites won't appear in intermission.)

On my side, install is simple: inside the LocalApp folder, find fmw_dosd, then drag and drop the modData and AddOns files. Preferably, remove manually the old FMW4 Youmu files before putting mine.
 
Last edited:
Back
Top