Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - TheHobgoblin

Pages: [1]
1
I think I am 95+% of the way to expanding the character slots from 9 to 12, allowing the remaining 3 characters to be fully utilized.

I have spent basically the past two days on it.

To get as far as I did involved editing all of these classes

Under the "-" category
Actor
btl_init
ETb
EventEngine
FF9PARTY_INFO
ff9play
FF9StateGlobal
FieldHUD
NameSettingUI
NGUIText
PartySettingUI
PLAYER
ShopUI


Under the "FF9" category
ff9abil
ff9shop
FFSHOP_INFO

I will try to give more detailed information in the future.

It seems like Beatrix has to remain the slot 8 character with Cinna, Marcus and Blank becoming 9, 10 and 11 respectively. Initially I was going to try to match their slots to their character numbers, but for whatever reason it didn't work out. I was getting everyone's models shifted by 1 place (Blank was using Beatrix's model, Marcus had Blanks and Cinna had Marcus's)

In fact, the entire thing might be working now, but the issue I am having is that at the end of that initial battle, when the mask is supposed to come off, the game crashes and it reports a violation with the SFX file. I don't know if it is the character animation of the mask falling off or if it is the game trying to focus the camera on the opponent that is causing the crash, but it is one of the two.

But, after experimentation I found that if I leave every other change, but just change two numbers in the EventEngine file, that the game runs smoothly (at least for that first room) but Cinna, Marcus and Blank take the models of Quina, Eiko and Amarant respectively.

I feel like if I can just track down this one error then the job will be completed.


In the meantime, to experiment with this further, I would like to know how to change the game script so that I can add a change party members NPC in the first room. I already figured out how to put battles there. Any clues on how to do it?

Also, is there any possible way to change the settings for Hade's Workshop that would allow me to edit my already edited assembly instead of having to switch back and forth between an edited and unedited one?

2
Not really a technical question, but since I want to develop the temporary characters into full ones...

I think I can just move Beatrix over to Sword Art and White Magic-- in fact, link all 3 white mages to the same White Magic command. That will free up some space.

I think I will get rid of the SFX commands and instead just make the "theater" versions of everyone the same as their normal version. They only do 1 fight using those commands anyway.

I can also get rid of the superfluous Magic commands.

That leaves me with choices with the other three.

Being able to do away with the SFX commands gives me 14 new abilities I can make.

So should I

1) Make 4 unique commands for one and 5 for the other two
2) Make Cinna "Green Mage/Gray Mage" so that he would make use of spells from the White Magic and Black Magic lists. Then I can maybe give Marcus and Blank 7 unique commands each (I think I might be able to squeeze this in without running into the command limit since I am pruning unneeded ones)
3) Find a way to expand the Ability List as well as the Command list so that all 3 can have 8 unique commands each.

Since I am already editing the assembly file in order to try to increase the number of slots from 9 to 12 so that the additional characters can be used uniquely and I haven't completely solved that, the only trick to increasing the lists for spells and commands is that I won't be able to further edit it with Hades Workshop. And it would be so much easier to use it to edit the abilities than try to figure out how to do it via hex-editor or something.

And I haven't completely solved the puzzle on how to do it yet anyway. I honestly haven't been working on it much for the past few months.
But I have worked out how to turn that starting area into a test area by assigning it a random encounter script and then putting the characters I want to test into the initial party.

Addendum:

Seeing what I could free up in the Commands list by combining similar commands and removing the unused/1 time use ones, I can arrange this to 34 command blocks free.
That it plenty enough to turn Cinna into a proper mage with plenty of spells taken from the black mage/white mage/blue mage lists and still leave enough room for the other two to get 8 commands each, even if 1 has to be a pre-existing ability.

3
While we're in argument I also want to ask you..I've tried on South Gate to make Marcus jump on the bridge after Dagger jumps, but I don't know why for some reason the Object "Marcus" moves but not read the "jump" animation, plus takes a little to go back in it's normal state..if you know what I mean. What I did is simply copypaste the same codes of Dagger and use them for Marcus (setting his Jump animation..obviously) and also added the script on the Region...so what's wrong?

Thanks as always if you can help

UPDATE: I was wondering..is there a way, somehow, to emulate a "Change Disc"? Like a save menu, and then an image appears like to change the disc even if it's not? (You know, like Game Over)

Marcus's model might not have a jump animation as I don't think there is any point in the story that he jumps.
This sounds like the model moving, trying to execute an animation that doesn't exist, so instead doesn't do anything for the duration that the animation is meant to happen and then returning to the normal state.

4
Tirlititi has a mod for trance models defaults!.
https://www.dropbox.com/sh/ac7sr4q3z2cx9vp/AACQDfqXPvn8c3ylXeGUrBKEa?dl=0&preview=PC_AlwaysTranceMod.zip

it sets all characters on trance model but can be edited with the provided .hws!.

I don't suppose this could be used to add trance skins to Beatrix, Marcus, Blank and Cinna and an animation to change into them. Or, perhaps rather, allow them to have a "trance mode" without actually shifting to a new model.

As things are now, the game will crash if they are given a trance bar and it becomes full because the animation/skin is missing from those models.

And the only way I can think of a work around would be to edit the action for what happens when trance happens is so that instead of doing the animation to shift into their trance model, to make it so that all characters maybe just do their victory pose instead. So then none of the characters ever use their trance modes. I am not even sure if that would work, but I imagine it might.

And, honestly, not using the second skin for any of the characters is fine for me. Final Fantasy 7 didn't need its characters to mutate into weird super saiyajin versions of themselves for the round they had trance after all.

But-- still-- I might decide I want to try to make a trance skin for Marcus eventually if I can get him working without eliminating Eiko from the game.

5
2) Separating the slots of Eiko and Marcus (and Cinna/Quina and Blank/Amarant).
I'll edit this message and write the way to do it later...
Most of the things involved should be in the class "ff9play". The chararcters have several kinds of IDs and the one adding the problem is the "slot_id" or "slot_no". One has to add more "PLAYER_INFO" in the method "ff9play::FF9Play_New" and change all the conversion methods "ff9play::FF9Play_GetCharID2"... There are surely a bunch of other things to do and they need to be done smartly if one doesn't want to change all the field scripts related to Cinna/Blank/Marcus as temporary player characters...

Note: The field scripts are not part of the "Assembly-CSharp.dll" datas but are inside the archive "p0data7.bin" so you can still add HW modifications on top of dnSpy modifications.
If you try to open the modded "Assembly-CSharp.dll" with HW, it will surely crash though, as "rdata" is a key class for HW and it is assumed to have a very specific pattern (plus the total number of spells is hard-coded in HW's source).


Sorry for the late answer.

Well, it seems like Hades Workshop is better for editing the field scripts, and I am not having too much trouble with the command scripts-- even if I were to make a unique command for Blank afterwards, I could always just have Eiko, Beatrix and Dagger all use the same White Magic set instead of each having their own which would free up the necessary space.

But it sounds like what I will want to do is to have two versions of the Assembly-CSharp.dll, an original version I use for script editing and a second version that separates the character slots that I would use when actually playing the game.

Your answers are extremely helpful! Thank you very much.

-----------------------

A little update. I have searched through the DLL and replaced every instance that sets the max slots and max party size from 9 or 8 to 12. I found those values in FF9PARTY_INFO and PLAYER and FF9Shop and PartySettingUI. I also found and changed boolan values nearby those that were set at 8 or 9 to 12 since they seemed to be dictating this too.

Within the FF9 Play I added additional slots in FF9Dbg_SetCharacter, GetCharID2, GetCharID3, Play_Init, and Play_New.

I also wrote in Delete, GetAvgLevel, and SetParty that there are 12 slots to look at rather than 9.

The game starts just fine with all of these changes.

But, oddly enough, and I can't understand why, but if I change the value for max slot ID in FF9Play_Add or FF9Play_Init, then the game refuses to start. It opens up with the FF9 Logo and won't go any further. It doesn't even go to the main menu. I can go back in and change these values back to 9 and it starts up just fine.

What could I possibly be missing here? Because I feel like for the game scripts to work, that FF9Play_Add needs to not ignore slots that are above 9 and the Init needs to load up those additional slots. But even after changing everything else in the DLL, if I change either of those two values then the game freezes immediately. It doesn't even properly crash-- it just hangs on the logo.

6
Hello! I am a first time poster here, I was hoping I could seek some help on the mod I would like to make to the game.

I am a long-time fan of the Final Fantasy series and played Final Fantasy 9 when it first came out, but I lost my original CDs ages ago.

Anyway, I recalled being disappointed in certain aspects of the game when I played through it ages ago. Only recently did I find that it made it to PC and that there was a robust game editor for it. So I figured I could make the changes I wanted.

Now, I have some experience with altering Final Fantasy games. I played through Final Fantasy 6 while keeping Biggs as an party member, turning him into a Dragoon and altering his stats. And did this without replacing any other character, though it required I accept that I had to keep track of his current stats and keep remaking him and re-making him each time he got over-written by another character and readding him to the party as several points during the World of Balance (wasn't as much of an issue in World of Ruin).

I learned quite a bit about how Final Fantasy games handled their data from this experience-- and from what I have found digging through Hades Workshop so far, it seems quite similar.

I started by grabbing the Alternate Fantasy mod as according to its description it restored lost content, made fixes and allowed Beatrix to be a more fully realized character.

There are generally two things I wanted to do
1) Make it so that Zidane doesn't have to be in the party at all times and so I can use other characters more

I already found the guide on how to do that and implemented it.

2) Turn Marcus into a more fully realized character.

I don't know why, but I really liked the design of the character. And I knew from years ago that it was impossible to get him back once he leaves because his character slot gets over-written by Eiko.

But going by Final Fantasy VI, there should be 16 character slots since the game is written in binary and it should be defined by 0-F.

Anyway-- foolishly thinking this wasn't going to be an issue, I dived right in-- changed up the stats for all characters so that they had the same amount of points and were more similar to their versions in the mobile game Final Fantasy Record Keeper (just made them up for Blank and Cinna as I had no intention of using them anyway), and examining further, I found that I could assign him a list of learnable abilities-- which I quickly did, using Zidane as I base and keeping all abilities he had in common with Steiner, Freya and Amarant-- then creating new abilities.

The Alternate Fantasy started with a couple, but I created 8 new abilities based on him in Final Fantasy Record Keeper (and 2 powerful abilities to Beatrix).

I ran into my first problem when I went to add all of these abilities to the Banditry command and hit the error "You cannot add spells to the list anymore. Maybe you can try to remove spells elsewhere or link commands together to increase the limit here"

That's when I realized that for as easy as this tool was to use, perhaps it wasn't as robust as I was hoping.
Although I am wondering if maybe the easiest way to get around this is to just assign all 3 White Mages a single "White Mage" command set that has the full list of abilities and the characters just need to learn the exclusive ones. Since there will be a few abilities that each of them won't learn, I guess those will either appear blank or grayed out for them. Maybe I can do that if I decide to add Blank to the game.

Anyway, I moved stuff around, parsed things down, made all SFX into a single command set which has been assigned to all of the Tantalus's characters alternate ability sets, removed a few of the miscellaneous spells from seemingly unused other sets and just barely squeezed it down.

I also put the ability to learn Marcus's new abilities onto appropriate weapons that he can use (and the same for Beatrix's new abilities).
If anyone is curious, the abilities I created are Toxic Slash (Non-Elemental Magic Weapon attack that poisons), Wind Slash (Air Elemental Magic Weapon Attack), Flurry (Physical attack that hits all enemies), Hype Up (Hastes the whole party), Poison Impulse (Powerful Physical Wind Elemental Attack that hits and poisons all enemies), as well as the Magic Break and Armor Break from Sword Art and Zidane's "What's That!?!" skill.
Everything else I had him learn is similar to Zidane except I switched out Chemist for HP +10% and Protect Girls with Cover.

The extra abilities I gave to Beatrix are Rose of May which casts Protect on the whole party and Knight's Protector which is a Powerful Physical/Holy Attack that damages all enemies.


Anyway, the next step would be to find a point in the game in which he can enter the party and as I play through the games, find appropriate scenes where he should appear and have dialogue (likely based on where Quina and Amarant appear) and then add him to the game script in those locations as I play through it.

But the problem is that I have looked through this thread and on guides and everything says "To switch out Eiko for Marcus"-- but that's not what I want to do at all. I don't want to get rid of Eiko, I just want to add an additional option.


From my experience with the Final Fantasy XI editing, I was under the impression that the reason for Eiko over-writing Marcus was that the Marcus actor data was written to a particular character slot and then the game accidentally didn't write all her data which is why she inherited his stats.

So within the game code I would think
0 - Zidane
1 - Vivi
2 - Garnet
3 - Steiner
4 - Freya
5 - Cinna/Quina
6 - Marcus/Eiko
7 - Blank/Amarant
8 - Beatrix

But we aren't on a PSX anymore, there is no need to save memory by over-writing the characters.
So why not simply go into the game script and tell the game to write Marcus's data as character 9?
Then when the game script deals with him, change that so it knows to deal with character 9 instead of character 6.
I expect I will also have to tell the menu that there even is a character 9 so that it will know to allow me to scroll there and select the character.

I can find the scripts that allow Amarant and Quina to become available in the party menus, so I imagine I can copy that model.

But, then again, I have already ran into what feels like an artificial limit with the command menus. I get why the game is limited to only 255 items, but I am not sure why I can't assign a different number to a temporary character within the script so that no over-writing occurs.

I would have entirely given up hope except on one of the boards I saw that one could use Memoria and with a simple ini command you can "enable all characters" and a screenshot that shows Beatrix, Cinna, Marcus and Blank in the same party. However, Memoria isn't compatible with anything I have done so far nor the Alternate Fantasy mod nor does it looks like editing the game script is as easy as it is in Hades Workshop-- so I am hoping there is a way to do what I want to do using this program.

I have also read that if I play the game as I have now modded it and allow Marcus to learn the abilities I have given him, that Eiko is likely to inherit those abilities?
Also, there are special things I need to do so that he can Trance (and not crash the game)?

I will keep looking through the threads, but if anyone can point me to the code snippets I will need to use with indication which scene's scripts I need to edit to get the result I want, I would greatly appreciate it.

Pages: [1]