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

  • Thread starter Thread starter Tirlititi
  • Start date Start date
Status
Not open for further replies.
For your question, yes it'll apply both for the enemy and the party uses of a spell animation.

For the binary file, I can't say... Can you provide me a link with the RGR translation patch? I'll look into it this week.
 
I was wondering a few things:

1 - Is it possible to fix the Marcus/Eiko glitch?

2 - The first time you meet a new char, his level will be higher than 1 unless you're on level 1. This makes it impossible to max mag stones for that char if you level up. Is there a way to disable this check and simply have the character begin at level 1?

3 - Is it possible to disable equipment stat boosts so the stat growth is fixed to its minimum value?
 
3 - Is it possible to disable equipment stat boosts so the stat growth is fixed to its minimum value?
Yes, that can be done right in the item section of Hades Workshop. Each weapon or armor has a Stat Set that can be modified to your liking.
 
Yes, that can be done right in the item section of Hades Workshop. Each weapon or armor has a Stat Set that can be modified to your liking.
Yes, but I don't mean the stat boost when equipped, I mean the bonus pool that adds extra stats when you level up depending on what equipment you're using.
 
2 - The first time you meet a new char, his level will be higher than 1 unless you're on level 1. This makes it impossible to max mag stones for that char if you level up. Is there a way to disable this check and simply have the character begin at level 1?
Yeah,  there is possibility. You should Edit Field scripts where characters fist time join your party.
Also I took Eiko at lv1 when Markus was lv 22

Scroll up all messages and you will find what Scripts you should edit to obtain Eiko and Amarant at minimal levels.
 
Gorildo
If you want take Freya and Quina at Lv1 you should edit Lindblum Square field scripts and Qu's Marsh Pond scripts.
 
@itoikenza : There's unfortunatly no way to replace Beatrix inside the menus and battles and not on the field, besides doing what I described several times (replace Beatrix by a normal character at the beginning of the field's "main" function and replace her back in the party at the end of that same function).

I plan to make HW compatible with the Steam version (actually, if everything goes well, the space limitation should be removed, enabling a bunch of cool stuff), but I can't tell before I see it ^^"
 
Too bad about Beatrix, Tirlititi, thanks for considering making steam ver. compatible.

Remember this?!
itoikenzaFF9Change.PNG

How about that editing "Change" into any other movelist, or even a custom one called "Killer"
 
Last edited:
Remember this?!

itoikenzaFF9Change.PNG

How about that editing "Change" into any other movelist, or even a custom one called "Killer"
Is this type of Modding works?
 
No, it still doesn't work and I can't give any more answer that I gave at the time itoikenza :/
 
Just a quick question to ask, I noticed that Lai Strike has its own status formula, does anyone know what the difference between its and bad status's formula is?
 
Yeah,  there is possibility. You should Edit Field scripts where characters fist time join your party.
Also I took Eiko at lv1 when Markus was lv 22

Scroll up all messages and you will find what Scripts you should edit to obtain Eiko and Amarant at minimal levels.
I see now, thanks.

If you have the Freya and Quina scripts please post them too. Also, what exactly is the Quina glitch? Does it affect anything else? Please inform us if you can figure out a fix.

I can't make much sense out of those scripts, so thanks again.  :-D
 
Script edition for Blank LV1

Find field "Evil Forest/Nest" CD 1 -function -  Function Main_Loop
Swap this part of script
Code: [Select]
Code:
    case +0:        MoveCamera( 160, 112, 1, 8 )        Wait( 45 )        MoveCamera( 256, 224, 30, 8 )        Wait( 15 )        RunScript( 2, 15, 12 )        Wait( 10 )        RunScript( 2, 18, 12 )        Wait( 10 )        RunScriptSync( 2, 16, 12 )        WindowSyncEx( 16, 3, 128, 137 )        WindowSyncEx( 15, 1, 128, 138 )        WindowSyncEx( 18, 2, 128, 139 )        WindowSyncEx( 18, 2, 128, 140 )        WindowSyncEx( 18, 2, 128, 141 )        WindowSyncEx( 15, 1, 128, 142 )        WindowSyncEx( 18, 2, 128, 143 )        0xBD( 9, 2798 )        Music1( 25089, 65535, 50 )        Model2( 40960, 12, 128, 1 )        Wait( 15 )        WindowAsyncEx( 15, 1, 128, 144 )        Wait( 45 )        set VAR_B13_21 = 2059        SetPartyReserve( VAR_B13_21 )        RemoveParty( 0 )        RemoveParty( 1 )        RemoveParty( 2 )        RemoveParty( 3 )        RemoveParty( 4 )        RemoveParty( 5 )        RemoveParty( 9 )        RemoveParty( 6 )        RemoveParty( 10 )        RemoveParty( 7 )        RemoveParty( 11 )        RemoveParty( 8 )        set VAR_A6_147 = PartyAdd(11)        set VAR_A6_147 = PartyAdd(0)        set VAR_A6_147 = PartyAdd(1)        set VAR_A6_147 = PartyAdd(3)        if ( IsInParty(5) ) {            set Setting_OptionalQuina = 1        } else {            set Setting_OptionalQuina = 0        }        if ( ( ( VAR_B13_19 >> 14 ) & 1 ) == 0 ) {            SetCharacterData( 11, 1, 14, 21, 12 )            set VAR_B13_19 |= 16384            SetRow( 11, 1 )        }        SetHP( 11, 9999 )        SetMP( 11, 999 )        SetStatus( 11, 127 )        if ( ( ( VAR_B13_19 >> 0 ) & 1 ) == 0 ) {            SetCharacterData( 0, 1, 255, 9, 0 )            set VAR_B13_19 |= 1        }        if ( ( ( VAR_B13_19 >> 3 ) & 1 ) == 0 ) {            SetCharacterData( 3, 1, 255, 5, 3 )            set VAR_B13_19 |= 8        }        if ( ( ( VAR_B13_19 >> 1 ) & 1 ) == 0 ) {            SetCharacterData( 1, 1, 255, 5, 1 )            set VAR_B13_19 |= 2        }        SetName( 11, 96 )        set Setting_OptionalQuina = 0        set Setting_DaggerDepresses = 0        set Setting_MPx4 = 1        Battle( 1, 303 )        break
to
Code: [Select]
Code:
    case +0:        MoveCamera( 160, 112, 1, 8 )        Wait( 45 )        MoveCamera( 256, 224, 30, 8 )        Wait( 15 )        RunScript( 2, 15, 12 )        Wait( 10 )        RunScript( 2, 18, 12 )        Wait( 10 )        RunScriptSync( 2, 16, 12 )        WindowSyncEx( 16, 3, 128, 137 )        WindowSyncEx( 15, 1, 128, 138 )        WindowSyncEx( 18, 2, 128, 139 )        WindowSyncEx( 18, 2, 128, 140 )        WindowSyncEx( 18, 2, 128, 141 )        WindowSyncEx( 15, 1, 128, 142 )        WindowSyncEx( 18, 2, 128, 143 )        0xBD( 9, 2798 )        Music1( 25089, 65535, 50 )        Model2( 40960, 12, 128, 1 )        Wait( 15 )        WindowAsyncEx( 15, 1, 128, 144 )        Wait( 45 )        set VAR_B13_21 = 2048        SetPartyReserve( VAR_B13_21 )        RemoveParty( 0 )        RemoveParty( 1 )        RemoveParty( 2 )        RemoveParty( 3 )        RemoveParty( 4 )        RemoveParty( 5 )        RemoveParty( 9 )        RemoveParty( 6 )        RemoveParty( 10 )        RemoveParty( 7 )        RemoveParty( 11 )        RemoveParty( 8 )        if ( IsInParty(5) ) {            set Setting_OptionalQuina = 1        } else {            set Setting_OptionalQuina = 0        }        if ( ( ( VAR_B13_19 >> 14 ) & 1 ) == 0 ) {            SetCharacterData( 11, 1, 14, 21, 12 )            set VAR_B13_19 |= 16384            SetRow( 11, 1 )        }        SetHP( 11, 9999 )        SetMP( 11, 999 )        SetStatus( 11, 127 )        if ( ( ( VAR_B13_19 >> 0 ) & 1 ) == 0 ) {            SetCharacterData( 0, 1, 255, 9, 0 )            set VAR_B13_19 |= 1        }        if ( ( ( VAR_B13_19 >> 3 ) & 1 ) == 0 ) {            SetCharacterData( 3, 1, 255, 5, 3 )            set VAR_B13_19 |= 8        }        if ( ( ( VAR_B13_19 >> 1 ) & 1 ) == 0 ) {            SetCharacterData( 1, 1, 255, 5, 1 )            set VAR_B13_19 |= 2        }        set VAR_A6_147 = PartyAdd(11)        set VAR_A6_147 = PartyAdd(0)        set VAR_A6_147 = PartyAdd(1)        set VAR_A6_147 = PartyAdd(3)        SetName( 11, 96 )        set Setting_OptionalQuina = 0        set Setting_DaggerDepresses = 0        set Setting_MPx4 = 1        Battle( 1, 303 )        break
 
Script edition for Freya LV1

Find field "Lindblum/Square" CD 1 -function -  Function Main_16 (there is two square areas at Lindblum you need business district's square)
Swap this part of script
Code: [Select]
Code:
        if ( GetTimerTime > 3 ) {            if ( !VAR_B6_56 ) {                set VAR_B13_21 = 17                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )                    }
to
Code: [Select]
Code:
        if ( GetTimerTime > 3 ) {            if ( !VAR_B6_56 ) {                set VAR_B13_21 = 16                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )
This script would work if only you will fight with Zaghnol during Hunting Festival

Otherwise you should edit other field script at "L. Castle/Conf. Room" - Function Main_Loop, but I didn't edit this script before and don't know could it cause glitches or not.
 
Last edited:
Script edition for Quina LV1

Find field "Marsh/Pond" CD 1 - Function Main_Loop
Swap this part of script
This script edition would work if you take Quina on 1 CD after Hunter Festival before Gizamaluke if you will refuse join him to the party at Quans House
Code: [Select]
Code:
                        }                        0xA9( -6 )                        FadeFilter( 6, 24, VAR_B6_17, 255, 255, 255 )                        Wait( 25 )                        set VAR_B13_21 = 39                        SetPartyReserve( VAR_B13_21 )                        set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                        set VAR_B10_8 = 0                        while ( VAR_B10_8 <= 11 ) {                            if ( IsInParty(VAR_B10_8) ) {                                set VAR_B10_10 |= ( 1 << VAR_B10_8 )                            }
to
Code: [Select]
Code:
                        }                        0xA9( -6 )                        FadeFilter( 6, 24, VAR_B6_17, 255, 255, 255 )                        Wait( 25 )                        set VAR_B13_21 = 32                        SetPartyReserve( VAR_B13_21 )                        set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                        set VAR_B10_8 = 0                        while ( VAR_B10_8 <= 11 ) {                            if ( IsInParty(VAR_B10_8) ) {                                set VAR_B10_10 |= ( 1 << VAR_B10_8 )                            }
Find field "Marsh/Pond" CD 2 - Function Main_Loop
Swap this part of script
This script edition would work if you take Quina on 2 CD when you start searching the entrance to Fossil Roo if you will refuse join him to the party at Quans House
Code: [Select]
Code:
                            }                            0xA9( -6 )                            FadeFilter( 6, 24, VAR_B6_17, 255, 255, 255 )                            Wait( 25 )                            set VAR_B13_21 = 51                            SetPartyReserve( VAR_B13_21 )                            set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                            set VAR_B10_8 = 0                            while ( VAR_B10_8 <= 11 ) {                                if ( IsInParty(VAR_B10_8) ) {                                    set VAR_B10_10 |= ( 1 << VAR_B10_8 )                                }
to
Code: [Select]
Code:
                            }                            0xA9( -6 )                            FadeFilter( 6, 24, VAR_B6_17, 255, 255, 255 )                            Wait( 25 )                            set VAR_B13_21 = 32                            SetPartyReserve( VAR_B13_21 )                            set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                            set VAR_B10_8 = 0                            while ( VAR_B10_8 <= 11 ) {                                if ( IsInParty(VAR_B10_8) ) {                                    set VAR_B10_10 |= ( 1 << VAR_B10_8 )                                }
I gathered these scripts into one, and made them same for 1cd and 2cd.

The first script edition cause tiny glitch at displaying shops stats for party, if you come back to Lindblum before visiting Gizamaluke.
But don't worry glitch doesn't affect on game play and story line, it will fix after battle with Gizamaluke
 
Last edited:
Tirlititi
I have a question, and want ask you.
There is a script in the game for Dagger at field Evil Forest/Exit - Function Main_Loop
Code: [Select]
Code:
        LearnAbility( 2, 49 )        LearnAbility( 2, 51 )        LearnAbility( 2, 55 )        LearnAbility( 2, 58 )        LearnAbility( 2, 62 )
As I understood this code made for learning eidolons.

Where I can find script for unlearn eidolons on the CD2?
 
There are two of them, for some reason. During the escape from Alexandria's Castle, the game unlearn those abilities both times Dagger is added to the party.

1st one (story-wise) is found in "A. Castle/Staircase" (1st one) at the end of "Zidane_Init".
2nd one is found in "A. Castle/Underground", still at the end of "Zidane_Init".

I also found one in Zidane's script of "Pinnacle Rocks/Path" (1st one), but I don't think it's ever ran because Zidane can't be controlled in these screens (judging from the "Main_Init" function, it would be ran if the player went in these screens before the Castle escape).

The setting about the eidolons' magic cost is redefined everytime the party is modified, but it's set to 0 the first time in the function "Main_19" of the field "Pinnacle Rocks/Hole" (this function runs once when the dialog with Ramuh is done ; it handles the screen change).

Thank you for the lvl1 scripts :)

@Dogshrapnel : I don't know for Iai Strike. It may be the accuracy that uses another formula. It may be to handle very specific effects ("Death" heals the target if it's under Zombie instead of adding the status for instance).
 
Tirlititi thank you for reply.
Final Fantasy IX realised on Android today.
Congratulations folk.

Tirlititi,  do you think it is possible to make Hades Workshop comparable with Android version of FFIX?
 
Tirlititi,  do you think it is possible to make Hades Workshop comparable with Android version of FFIX?
I'd like to know this too, because the Android Version looks gorgeous, but i'd really like to play it with some of the great mods that got released.
 
Tirlititi thank you for reply.
Final Fantasy IX realised on Android today.
Congratulations folk.

Tirlititi,  do you think it is possible to make Hades Workshop comparable with Android version of FFIX?
Thanks for the scripts. I believe the first time you meet Freya at the bar in Lindblum, when you get to the name screen, there isn't a script for setting her level right?

By the way, this new version is coming to PC eventually, but the REAL FF IX is on PS1  8-)
 
gorildo.
Yeah. You are right. There is no scripts for lv calculation at bar.
Perhaps,  I forgot about another Script edition for Quina LV1.
There might be  another script for modding. I will check it, and if I find it I will post it here.


Script edition for Quina LV1 part 2

Marsh/Master's House" CD 1 - Function Main_Loop
Swap this part of script
This script edition would work if you take Quina on 1 CD after Hunter Festival before Gizamaluke if you will join him to the party at Quans House
Code: [Select]
Code:
        }        switch 2 ( GetDialogChoice ) from 0 {        case +0:            RunScript( 6, 12, 17 )            RunScript( 6, 2, 18 )            if ( Global_ScenarioCounter < 5690 ) {                RunScriptSync( 6, 12, 19 )                set VAR_B13_21 = 51                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )                    }
to
Code: [Select]
Code:
        }        switch 2 ( GetDialogChoice ) from 0 {        case +0:            RunScript( 6, 12, 17 )            RunScript( 6, 2, 18 )            if ( Global_ScenarioCounter < 5690 ) {                RunScriptSync( 6, 12, 19 )                set VAR_B13_21 = 32                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )                    }
Find field "Marsh/Master's House" CD 2 - Function Main_Loop
Swap this part of script
This script edition would work if you take Quina on 2 CD when you start searching the entrance to Fossil Roo if you will join him to the party at Quans House
Code: [Select]
Code:
            } else {                RunScriptSync( 6, 12, 20 )                set VAR_B13_21 = 39                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )                    }
to
Code: [Select]
Code:
            } else {                RunScriptSync( 6, 12, 20 )                set VAR_B13_21 = 32                SetPartyReserve( VAR_B13_21 )                set VAR_B10_8 = ( VAR_B10_10 = ( VAR_B10_12 = ( VAR_B10_14 = 0 ) ) )                set VAR_B10_8 = 0                while ( VAR_B10_8 <= 11 ) {                    if ( IsInParty(VAR_B10_8) ) {                        set VAR_B10_10 |= ( 1 << VAR_B10_8 )                    }
 
Last edited:
Status
Not open for further replies.
Back
Top