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

  • Thread starter Thread starter Tirlititi
  • Start date Start date
Status
Not open for further replies.
You need to use the Unity Assets Viewer for that.
Open the resources.assets archive, search for the file "BtlEncountBgmMetaData.txt", export it, modify it and then re-import it.
Inside that file, there's a list of field IDs (so the Queen's Chamber in which you fight Beatrix is 1223) and for each field, a list of battles that can trigger in that field with the music ID of the battle ran. If a battle is missing there, the ambiant music doesn't stop when entering a battle.

So just find the field (1223), the battle (73) and put the correct music ID for it (117, "The Wavering Blade").

Here's a list of music IDs. I don't think that you can actually see it in Hades Workshop (only in the UAV when you open the music archive p0data62).
Code: [Select]
Code:
music033 -> A Place to Call Home (internal ID: 58)music078 -> A Song from Her Memory (internal ID: 106)music083 -> Aboard the Hilda Garde (internal ID: 112)music012 -> Aloha De Chocobo (internal ID: 24)music005 -> Amarant's Theme (internal ID: 2)music117 -> Another Nightmare (internal ID: 45)music122 -> Assault of the Silver Dragons (internal ID: 147)music102 -> Awaking Song (internal ID: 77)music070 -> Bahamut is Summoned (internal ID: 98)music006 -> Battle (internal ID: 0)music071 -> Before the Altar (internal ID: 99)music043 -> Beyond the Twilight (internal ID: 67)music054 -> Black Mage Village (internal ID: 82)music024 -> Boss Battle (internal ID: 35)music059 -> Bran Bal, the Soulless Village (internal ID: 87)music114 -> Broken Spell, Healed Hearts (internal ID: 146)music044 -> Burmecia (internal ID: 68)music077 -> Chamber of a Thousand Faces (internal ID: 105)music097 -> Cid's Theme (internal ID: 133)music049 -> Cleyra Settlement (internal ID: 80)music064 -> Cleyra's Trunk (internal ID: 92)music062 -> Conde Petie (internal ID: 90)music037 -> Court Jesters (internal ID: 53)music087 -> Crystal World (internal ID: 121)music093 -> Daguerreo, the Hermit's Library (internal ID: 129)music003 -> Danger in the Forest (internal ID: 4)music057 -> Dark City Treno (internal ID: 85)music098 -> Dark Messenger (internal ID: 134)music067 -> Desert Palace (internal ID: 96)music069 -> Devil's Ambition (internal ID: 97)music030 -> Distant Memory (internal ID: 59)music121 -> Doga and Une (internal ID: 148)music050 -> Eidolon Wall (internal ID: 81)music060 -> Eiko's Theme (internal ID: 88)music113 -> Esto Gaza (internal ID: 144)music055 -> Eternal Harvest (internal ID: 83)music014 -> Eye to Eye (internal ID: 20)music038 -> Faerie Battle (internal ID: 61)music101 -> Final Battle (internal ID: 71)music013 -> Find the Princess (internal ID: 27)music053 -> Fleeting Life (internal ID: 76)music116 -> Foolproof Love Letter Scheme (internal ID: 141)music048 -> Fossil Roo (internal ID: 79)music011 -> Freya's Theme (internal ID: 32)music001 -> Game Over (internal ID: 6)music063 -> Gargan Roo (internal ID: 91)music010 -> Garnet's Theme (internal ID: 29)music105 -> Girl of Madain Sari (internal ID: 139)music118 -> Guardians (internal ID: 72)music082 -> Hunter's Chance (internal ID: 111)music111 -> I Want to be Your Canary (internal ID: 145)music031 -> Ice Cavern (internal ID: 60)music080 -> Iifa, the Ancient Tree of Life (internal ID: 109)music112 -> Inseparable Hearts (internal ID: 142)music075 -> Ipsen's Castle (internal ID: 103)music115 -> Kiss of Betrayal (internal ID: 41)music066 -> Kuja's Theme (internal ID: 95)music088 -> Light of Destiny (internal ID: 124)music047 -> Lindblum (internal ID: 74)music058 -> Look Back, See the Frog! (internal ID: 86)music092 -> Master of Time (internal ID: 118)music084 -> Melodies of Life (internal ID: 113)music096 -> Memoria (internal ID: 132)music046 -> Moogle's Theme (internal ID: 73)music081 -> Mount Gulug (internal ID: 110)music061 -> Mourning in the Sky (internal ID: 89)music025 -> Oeilvert (internal ID: 36)music027 -> Out of the Frying Pan (internal ID: 49)music026 -> Outlaws (internal ID: 44)music045 -> Over the Hill (internal ID: 69)music056 -> Pandemonium (internal ID: 84)music106 -> Peaceful City (internal ID: 138)music120 -> Prelude (internal ID: 156)music041 -> Prima Vista Orchestra (internal ID: 65)music089 -> Protecting My Devotion (internal ID: 125)music032 -> Qu's Marsh (internal ID: 57)music009 -> Quina's Theme (internal ID: 15)music036 -> RUN! (internal ID: 52)music090 -> Roses of May (internal ID: 116)music052 -> Rufus' Welcoming Ceremony (internal ID: 75)music094 -> Ruins of Madain Sari (internal ID: 130)music079 -> South Gate (internal ID: 108)music110 -> Star-Crossed Lovers (internal ID: 143)music039 -> Steiner's Delusion (internal ID: 62)music007 -> Steiner's Theme (internal ID: 10)music017 -> Swords of Fury (internal ID: 18)music095 -> Terra (internal ID: 131)music042 -> Tetra Master (internal ID: 66)music109 -> The Black Waltz (internal ID: 140)music020 -> The Evil Within (internal ID: 30)music108 -> The Extraction (internal ID: 7)music016 -> The Fateful Hour (internal ID: 17)music073 -> The Four Mirrors (internal ID: 101)music018 -> The Meeting (internal ID: 12)music091 -> The Wavering Blade (internal ID: 117)music021 -> Thy Warmth (internal ID: 33)music022 -> Tragic Love (internal ID: 25)music072 -> Ukulele de Chocobo (internal ID: 100)music029 -> Unforgettable Silhouette (internal ID: 50)music004 -> Unforgettable Sorrow (internal ID: 1)music051 -> Unrequited Love (internal ID: 70)music015 -> Vamo Alla Flamenco (internal ID: 22)music000 -> Victory Fanfare (internal ID: 5)music002 -> Village of Dali (internal ID: 3)music008 -> Vivi's Theme (internal ID: 9)music068 -> Wicked Melody (internal ID: 94)music028 -> You're Not Alone (internal ID: 48)music085 -> Zidane and Dagger's Song (internal ID: 115)music023 -> Zidane's Theme (internal ID: 34)
 
Last edited:
I've changed it, but it won't let me import it back in.

The text for it is greyed out.


NM, I saw I had to close the launcher and import it that way. :-[

Works fine. :-D
 
Last edited:
OK, I'm nearing the end of disc 2 and one of my major changes is to add another hopeless boss fight.

I plan to add Kuja and end the battle against the party with Flare Star.
Down the line I plan to the same with Steiner and Beatrix face him at Alexandria for another hopeless fight.

I know I need to do a few changes in the fields tab to trigger the fight, but how do I add him as a boss in the enemy tab?
 
You can't add new battles unfortunatly.
However, there are a few dummied battles (that's what I've used to add the 4 extra bosses):
- 2 dummy vices that have nonsensical names (the names are actually raw japanese glyphs),
- 1 Zorn/Thorn battle that is dummied (it doesn't have the "Marthym" dialogs and only dummy attacks).
Also, you may delete a few redundant battles (Grand Dragons...) and replace them in the World maps battle lists. The two Ozma battles are also nearly the same as the only difference is the "Out of reach" flag, etc...

You can copy/paste single enemies and single attacks with a right-click (so right-clicking "Kuja" -> copy -> go to a dummied battle -> right-click -> paste).
 
@Shinryu actually u can easily remove the time limit in getting the  excalibur 2 using this tool so u dont need to rush your game. ;)  go to
environment---->fields-->memoria gate to space and edit script:


 if ( GetTime <= 43200L ) {
        InitCode( 3, 0 )

remove the [ if ( GetTime <= 43200L ) { ]

and this one

 if ( ( ( ( IsMovementEnabled == 1 ) && ( VARL_GenBool_7730 == 0 ) ) && ( VAR_GlobBool_145 == 0 ) ) && ( GetTime <= 43200L ) ) {

remove this line : && ( GetTime <= 43200L ) ) {
TY
 
So if I want to add an extra line when the party confront Kuja, do I need to add these cases like this that's already in the game?

Code: [Select]
Code:
 case 49:        RunAnimation( 10382 )        WaitAnimation(  )        WaitAnimation(  )        SetAnimationFlags( 2, 0 )        RunAnimation( 10388 )        WindowAsync( 2, 128, 212 )        WaitWindow( 2 )        set VAR_GlobInt16_47 = 50        SetAnimationFlags( 0, 0 )        RunAnimation( 10392 )        WaitAnimation(  )        RunAnimation( 8197 )        WaitAnimation(  )        SetAnimationFlags( 2, 0 )        RunAnimation( 8195 )        break
In my mod, Zidane will have  a new line after Kuja's Oh, brother... line

Zidane: Play with us?

Looking at Zidane's Function Zidane_Loop, his last case is 141 when they decide to go after dagger

So do I need to make a case 142 for Zidane's new line right after case 49?
 
2 solutions:

- The simplest, you don't add any case and you just add a "WindowSyncEx" line right after Kuja's line. With the "Ex" variant, you can choose the speaker so you don't need to have that line in a function of Zidane. There are a few things that can't be done with that solution thoug (I think there's no "RunAnimationEx" for instance).

- The cleanest, you add a case 142 indeed with your extra line and whatever happens at that time. You may add a case 142 to the other characters too (if people are reacting with an animation at the same time for instance). Then, you need to reroute the cutscene progression flow that is handled by a variable (surely "VAR_GlobInt16_47" in this case):
1) You want the new reaction to come right after Kuja's "case 49" script, so replace the "set VAR_GlobInt16_47 = 50" by "set VAR_GlobInt16_47 = 142",
2) In your new reaction case (142 but in only one character's script, Zidane's in this case), make it so the cutscene gets back on track after the added dialog by using "set VAR_GlobInt16_47 = 50".
That way, the cutscene's progression counter does not increase linearly but does something like "... 47, 48, 49, 142, 50, 51...". That's not optimal but that's less tedious than inserting a case and shift all the others. There *might* be side-effects because of that but I don't think there is (I've never seen a cutscene's script where it could be a problem).
 
I made a start in Zidane's Function Zidane_Loop and when I tried to parse it I got this message

- Line 251: Cases amount doesn't match

When I press OK and open the box again, the case disappears.

This was what I put in for Zidane

 case 142:
    WindowSync( 2, 128, 335 )
    set VAR_GlobInt16_47 = 143
    break

When I changed Kuja's varglobal to 142, that parsed just fine.
 
Last edited:
At the top of the function, in the "switchex" line, you need to increment the 1st number by 1.
Like "switchex X ( VAR_GlobInt16_47 ) {" -> "switchex X+1 ( VAR_GlobInt16_47 ) {".

The need of specifying the number of switch cases is bothering... I planned to make it optional at some point (and also make sure that the operation priorities are taken into account when parsing) but I never did in the end.
 
It worked.

I managed to trigger the boss battle but it got stuck at the black screen.


Looks like I already know what I forgot to add. But I'm happy I managed to trigger it first time.
I still have to add more code after the fight though.
 
Last edited:
I still seem to be in a soflock.

The transition to Kuja's boss fight happens, but it never gets past the black screen.

This is his case to trigger the fight which works...

Code: [Select]
Code:
case 143:        RunSoundCode( 0, 134 )        RunAnimation( 1698 )        WindowSync( 7, 128, 336 )        Wait( 5 )        Battle( 1, 198 )        SetHP( 0, 9999 )        SetHP( 1, 9999 )        SetHP( 3, 9999 )        SetHP( 2, 9999 )        SetHP( 4, 9999 )        SetHP( 5, 9999 )        SetHP( 7, 9999 )        SetHP( 6, 9999 )        SetHP( 8, 9999 )        SetMP( 0, 999 )        SetMP( 1, 999 )        SetMP( 3, 999 )        SetMP( 2, 999 )        SetMP( 4, 999 )        SetMP( 5, 999 )        SetMP( 7, 999 )        SetMP( 6, 999 )        SetMP( 8, 999 )        CureStatus( 0, 127 )        CureStatus( 1, 127 )        CureStatus( 3, 127 )        CureStatus( 2, 127 )        CureStatus( 4, 127 )        CureStatus( 5, 127 )        CureStatus( 7, 127 )        CureStatus( 6, 127 )        CureStatus( 8, 127 )        Wait( 5 )        break
Is there stuff I need to change in his Enemy Script to trigger the fight properly?
It looked like he's missing his Loop function. I'll look into that. :oops:

Nothing seems to be working now.
 
Last edited:
I don't know why nothing is working anymore, but the cutscene didn't resume simply because you forgot to add a line "set VAR_GlobInt16_47 = 50" in that "case 143". You need to put that variable back on the track of the normal cutscene.
 
Facepalms.

I forgot to change Kuja's group position. (I think the game thought that Zorn was still there.) That fixed it and triggered the battle.
 
This happens after Kuja's boss fight ends.

I've appeared to have hit a bug where the scene after the first Mistodon fight occurs but Dagger, Kuja and his silver dragon are still there.

So it skipped the FMV with the Red Rose appearing at the Iifa Tree and the first fight with the Mistodon.

Guess I'm missing variables in Kuja's case 143 to trigger his case 144?

yun4nngo_o.png
 
Last edited:
You are definitely doing (or missing) something wrong with the cutscene progression variable (VAR_GlobInt16_47), but without further indications, I can't guess what.
 
Code: [Select]
Code:
case 143:RunSoundCode( 0, 134 )        RunAnimation( 5199 )        WindowSync( 7, 128, 336 )        Wait( 5 )        Battle( 1, 198 )        Wait( 5 )        break
Do I need to add some variables after Battle( 1, 198 ) to get to case 144?
 
Yes, if there is a case 144...
Otherwise, you need to set it back to whatever value you jumped from.

Did you understand the purpose of the variable "VAR_GlobInt16_47"? That's what I've been talking about in my last 4 messages.
 
Yes, everything is set up after Kuja's boss, I just can't get case 144 to trigger after the boss. :(

I looked at Black Waltz No. 3's case for his fight at the Cargo Ship for referance and that didn't need any variables when his boss fight finished. :(
 
@ToraCarol: Maybe it has something to do with the dialog itself? What text opcodes are you using?
Hey Tirlititi! It's along time..sorry for the late reply, and good job with the updateon HWS! So...what do you mean exactly with text opcode? I know there is something like this for sure but I don't know where to look exactly right now..  :-\
 
Status
Not open for further replies.
Back
Top