[PSX/PC] General editor - Hades Workshop (0.50b)

  • Thread starter Thread starter Tirlititi
  • Start date Start date
Status
Not open for further replies.
About the frogs, it's in the scripts of the ponds:
1) In the "SpeakBTN" functions of the catchable frogs (Baby, Male, Female, Gold), there's a switch for the appearance of Quale:
Code: [Select]
Code:
            switchex 8 ( GetFrogAmount ) {            case 2 ; 5 ; 9 ; 15 ; 23 ; 33 ; 45 ; 99:                set VAR_GlobUInt8_64 = 2                break            default:                break            }
2) In the "Main_Loop", there's most of the cutscene's code, in particular the line "if ( GetFrogAmount == 99 ) {" triggering the battle.
The other rewards are also there, a bit after that line (in the "else" branch).

About the enemy targeting only Zombie characters, you can use that in an enemy script (the ATB function typically):
Code: [Select]
Code:
if ( ((GetRandom % 100) < 50) && ( FirstOf(SV_FunctionEnemy[MP]) >= 18 ) ) { // Example: 50% of chances to cast Life if there's a Zombie character and if the enemy has 18 MP or more    set SV_Target = Matching( SV_PlayerTeam[STATUS_CURRENT_A], 64 ) // All the Zombie characters    if ( #SV_Target ) { // Same as "if ( SV_Target ) {" or "if ( (#SV_Target) != 0 ) {"        set SV_Target = RandomInTeam(SV_Target) // Pick only one of them        Attack( ... ) // Cast Life        return    }}// etc... do something else if Life is not chosen for any reason
 
Last edited:
It's me from the Steam forum. I've decided to take a shot at modding this with the AF Beatrix source files.

I'm reading up on the threads in the first post and I would like to make a mod that would make her permanetly playable (not optional) after you obtain the Blue Narciss. She would be present at Lindblum when Dagger can no longer speak.

What steps would I need to do to make this possible if at all?
 
It requires a lot of script writing. It's better if you are familiar with programing but in any case, you should read a bit about how to do simple things with scripts here, here and here for instance.

In order to add a character to the party without asking the player's opinion (like when Vivi joins in the Prima Vista), it's this line:
Code: [Select]
Code:
set AddParty(8)
"8" is an ID for Beatrix's character slot (0 is for Zidane, etc... Marcus shares Eiko's character slot).
It works only if there are less than 4 characters already. You can remove a character beforehand using this:
Code: [Select]
Code:
RemoveParty(0)
In order to enable Beatrix in the party selection menu, you must add her in party's reserve:
Code: [Select]
Code:
set Setting_PartyReserve = 511SetPartyReserve(Setting_PartyReserve)
Note that it's a bit flag list (it works just like SV_Target in battle scripts). Usually, this party reserve is set to 255 for all the eight normal characters, so adding 256 to that value adds Beatrix.
Party reserve is reseted at different points during the game (when characters are temporarily splitted apart, etc...) so you need to take that into account.
To display the party selection menu, it's this:
Code: [Select]
Code:
if ( IsInParty(0) ) {    Party( 4, 1 ) // Form a party of 4 characters and lock Zidane inside} else {    Party( 4, 0 ) // Form a party of 4 characters without locking any character inside}
 
Editing's going well though I seem to have an issue activating the rewards against Baku in Evil Forest.

He's supposed to give exp, gil and a drop, but only AP was given at the results screen.

I also unticked disabled rewards but that didn't work.
 
He's surely not defeated by the battle ending script (there's surely a line like "RunBattleCode( EndBattle, VICTORY )") so the reward specific to Baku is not given, only the reward of the group.
Make sure to flag him as defeated right before that line ending the battle:
Code: [Select]
Code:
set SV_FunctionEnemy[DEFEATED_ON] =$ 1
You could also kill him for good with "set SV_FunctionEnemy[HP] =$ 0" but that would trigger other things like his death cry (I don't think he has one though), his death animation and fading... so that's a less good option.
 
Meant perfect/ ::)

Anyway, I'm trying to add some black magic spells to Dagger with this guide.

Code: [Select]
Code:
new rdata.FF9COMMAND(89, 349, 8276, 1, 16, 192UL)
It's not working as I'm getting that error.

Is there more I need to change to get it working?

I plan to make her a Red Mage.
 
You didn't show the error.
Maybe that's a missing comma.
Maybe that's caused by a non-automatic type conversion: dnSpy does that a lot, you need to add type conversion to many places, like:
Code: [Select]
Code:
varshort = something + 16; // Errorvarshort = (short)(something + 16); // Use this instead if the compiler complains: write the required converted type and wrap the computation inside parentheses
 
I never saw that error in dnspy. It complied just fine.

It was in HW when I was trying to add more spells to Dagger's magic command.  Despite following the guide, it says I can't add anymore spells to what she already has. :?

Hope that cleared the confusion
 
You can't add many spells inside commands in HW. Using dnSpy and the guide you linked is meant to bypass the limit in HW. Since you're using the Beatrix mod, I guess, that limit is already reached and that's why you need to use dnSpy.
 
I am using the Beatrix mod, but not her Shiroken Trance abilities. I made her a third dualcaster with her white magic.

In dnspy, her code is:

Code: [Select]
Code:
new rdata.FF9COMMAND(89, 349, 8276, 1, 16, 8UL)
Like in your guide, I changed the last number to 192.

I changed the 16 to 24 so she could gain new spells. But HW still says I can't add anymore commands.
 
You can't use HW after doing that modification; that's something you have to do last.
Well, actually, I'm not sure of what are the consequences of using HW after doing that engine modification... But the limit is hardcoded in HW and the program can't catch that the limit was increased with dnSpy.

If her White Magic and her trance command use the same spells, you can avoid using dnSpy though. Simply select either one of these commands and link it to the other: doing this saves up spell slots.
 
I have to be more specific in future, sorry. ::)

I want Dagger to learn more spells, not Beatrix.

Beatrix's commands will stay the same.
 
Last edited:
Still, if you link Beatrix's commands, it saves up space for adding more spells to another command.
 
That's what I've done for Beatrix, Dualcast with her White spells.

All I can do for now is leave Dagger with 6 white and 10 black spells until later.
 
Is there a way to increase or decrease the time limit when getting to Dagger at Alexandria?
 
Yes. In the script of "Environment -> Fields -> A. Castle/East Tower", there are these lines near the 2 thirds of the function "Zidane_Loop":
Code: [Select]
Code:
        ChangeTimerTime( 1801 )        ShowTimer( 1 )        RunTimer( 1 )
1800 seconds = 30 x 60 seconds = 30 minutes. Just put any number you want there to change the initial time limit.
Then, while it is running, you may use a line like "ChangeTimerTime( GetTimerTime + 60 )" to give a time bonus or whatever, for instance after defeating Tantarian in the Library.

Tip: this kind of setting, done in a cutscene, is usually either in the "Main_Loop" function of the cutscene's field or inside a function of the character doing the action at the same time the setup occurs. There, Zidane is the one speaking ("Yeah! We've got 30 minutes...") when the timer shows up, so that's in his function.
 
Thanks. It worked fine.

I'm almost at the point where I have to fight Beatrix for the last time and I want her special boss theme to play instead of the regular one.

Do I need to go into the Field tab for the Queen's Chamber or dnspy for this?
 
Status
Not open for further replies.
Back
Top