Author Topic: [PSX/PC] General editor - Hades Workshop (0.50b)  (Read 844652 times)

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1400 on: 2018-11-07 18:15:12 »
1- Ah, so photoshop does not feature multi-layer tiffs...
You can use Gimp (it's a free image tool) to open the tiff layers and export them in another format, but I don't know which one would be suitable for it.
I don't understand what you want to do with the backgrounds... You can, in the "Manage Background" window, untick all the tilesets except for the main one (usually the last) and export it using the option "Export Selected Only" (the two other options are not important in this situation).

5- In command lines, you need to write the paths inside quotes when there are spaces, so it would be something like this:
Code: [Select]
ffix_img_extr.exe "C:\Users\PC\Desktop\Nouveau dossier\ff9.img" "C:\Users\SonyNintendo\Desktop\Nouveau dossier"If you don't have a ff9.img file but only a .bin, you need to use a tool (like CDmage) to extract the .img out of the .bin (Zidane_2's tools is always using the .img).

lyokoffx

  • *
  • Posts: 27
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1401 on: 2018-11-07 20:37:30 »
I thank you very much for your help

1- Is this the maximum for extraction?

here that I also wish to detach it is underlined in red



I hide this box only "Sort Tileset by Depth"

2-I have the file FF9.img I have already extracted

I thank you for the correction of the command here now

Code: [Select]
ffix_img_extr.exe <C:\Users\PC\Desktop\Nouveau dossier/to/ff9.im> <C:\Users\PC\Desktop\Nouveau dossier\Nouveau dossier/to/extract>
The command works but



and the "exact" folder is completely empty and no file is created why?

edit: but I saw a folder created under my desk with these files



but I do not know how to use them?

I have the impression that it is files like the cases that I modify the extention for the "unity asset viewer" of Hades Workshop (for sound files and sprites)

is that the case? I do not know exactly their true extension?

and here is a log created at the end in this folder

Code: [Select]
Normal Dir
0     Flag:0     Start Sector:   fda9     End Sector:  fe15
1     Flag:1     Start Sector:   fe15     End Sector:  fe82
2     Flag:2     Start Sector:   fe82     End Sector:  feee
3     Flag:3     Start Sector:   feee     End Sector:  ff5a
4     Flag:4     Start Sector:   ff5a     End Sector:  ffc6
5     Flag:5     Start Sector:   ffc6     End Sector:  10030
6     Flag:6     Start Sector:   10030     End Sector:  1009b
7     Flag:7     Start Sector:   1009b     End Sector:  10108
8     Flag:8     Start Sector:   10108     End Sector:  10176
9     Flag:9     Start Sector:   10176     End Sector:  101e2
10     Flag:a     Start Sector:   101e2     End Sector:  1024e
11     Flag:b     Start Sector:   1024e     End Sector:  102bb
12     Flag:c     Start Sector:   102bb     End Sector:  10327
13     Flag:d     Start Sector:   10327     End Sector:  10393
14     Flag:e     Start Sector:   10393     End Sector:  103ff
15     Flag:f     Start Sector:   103ff     End Sector:  1046b
16     Flag:10     Start Sector:   1046b     End Sector:  104d8
17     Flag:11     Start Sector:   104d8     End Sector:  10545
18     Flag:12     Start Sector:   10545     End Sector:  105b1
19     Flag:13     Start Sector:   105b1     End Sector:  1061e
20     Flag:14     Start Sector:   1061e     End Sector:  1068a
21     Flag:15     Start Sector:   1068a     End Sector:  106f7
22     Flag:16     Start Sector:   106f7     End Sector:  10765
23     Flag:17     Start Sector:   10765     End Sector:  107d2
24     Flag:18     Start Sector:   107d2     End Sector:  1083f
25     Flag:19     Start Sector:   1083f     End Sector:  108ad
26     Flag:1a     Start Sector:   108ad     End Sector:  1091a
27     Flag:1b     Start Sector:   1091a     End Sector:  10989
28     Flag:1c     Start Sector:   10989     End Sector:  109f7
29     Flag:1d     Start Sector:   109f7     End Sector:  10a64
30     Flag:1e     Start Sector:   10a64     End Sector:  10ad1
31     Flag:1f     Start Sector:   10ad1     End Sector:  10b3e
32     Flag:20     Start Sector:   10b3e     End Sector:  10bab
33     Flag:21     Start Sector:   10bab     End Sector:  10c18
34     Flag:22     Start Sector:   10c18     End Sector:  10c85
35     Flag:23     Start Sector:   10c85     End Sector:  10cf1
36     Flag:24     Start Sector:   10cf1     End Sector:  10d5f
37     Flag:25     Start Sector:   10d5f     End Sector:  10dce
38     Flag:26     Start Sector:   10dce     End Sector:  10e3a
39     Flag:27     Start Sector:   10e3a     End Sector:  10ea6
40     Flag:28     Start Sector:   10ea6     End Sector:  10f13
41     Flag:29     Start Sector:   10f13     End Sector:  10f80
42     Flag:2a     Start Sector:   10f80     End Sector:  10fee
43     Flag:2b     Start Sector:   10fee     End Sector:  1105b
44     Flag:2c     Start Sector:   1105b     End Sector:  110c9
45     Flag:2d     Start Sector:   110c9     End Sector:  11135
46     Flag:2e     Start Sector:   11135     End Sector:  111a2
47     Flag:2f     Start Sector:   111a2     End Sector:  1120e
48     Flag:30     Start Sector:   1120e     End Sector:  1127b
49     Flag:31     Start Sector:   1127b     End Sector:  112e8
50     Flag:32     Start Sector:   112e8     End Sector:  11356
51     Flag:33     Start Sector:   11356     End Sector:  113c3
52     Flag:34     Start Sector:   113c3     End Sector:  11430
53     Flag:35     Start Sector:   11430     End Sector:  1149d
54     Flag:36     Start Sector:   1149d     End Sector:  1150a
55     Flag:37     Start Sector:   1150a     End Sector:  11578
56     Flag:38     Start Sector:   11578     End Sector:  115e5
57     Flag:39     Start Sector:   115e5     End Sector:  11653
58     Flag:3a     Start Sector:   11653     End Sector:  116bf
59     Flag:3b     Start Sector:   116bf     End Sector:  1172a
60     Flag:3c     Start Sector:   1172a     End Sector:  11796
61     Flag:3d     Start Sector:   11796     End Sector:  11803
62     Flag:3e     Start Sector:   11803     End Sector:  11870

and thank you for everything in advance
« Last Edit: 2018-11-24 10:49:55 by lyokoffx »

Kefka

  • *
  • Posts: 202
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1402 on: 2018-11-17 13:28:31 »
@Kefka: So, you are definitely doing something wrong (or maybe there was a bug in a previous version of HW and I don't remember fixing it and you are still using that old version of HW).

In your .hws file, there was no script update at all. There was only an unconfigured "Abadon + Amdusias" battle and 4 unconfigured "Hecteyes + Ring Leader" battles. When I say "unconfigured", it means that there was no entry added for the new enemy and no change in the "Main_Init" function. The enemy's stats and attacks were properly copied to the new battle and the group was properly setup. However, there was no proper script for him and it lacked its battle animations for some reason.

So you need:
- To do the steps 6) and 7) described there. Maybe you did on your end but shared an old .hws because none of these steps were put in the file you provided (and it cannot just be a bug with the entry: even your "Main_Init" function was not modified).
- To add the animations required to cast spells. The Ring Leader only uses 3 animations: select him, click on "Edit Resources", then "Add Animation" x3 and change them to "Cast Init", "Cast Loop" and "Cast End". Alternatively, changing the enemy's model ID to something else and switching it back will reset the resources (and thus automatically add these 3 animations).

After this fix, it was all good on my end. However, the other battles were you added more enemies (you have battles with 4 Ring Leaders) are not working correctly because you didn't add any "InitObject" line in those battles' script either.

Sorry for the late reply, but it turned out that my hws file had somehow become corrupted, forcing me to redo most of my work from scratch. I certainly did follow all of the steps in your aformentioned post, and those battles with the 4 Ring Leaers have always worked flawlessly for me. Don't know at which point my hws file got screwed up, but after bringing my new one up to date again I took your advice for updating the animations by switching the enemy model to something else and back again. Along with a few tweaks to the AI, this seemed to do the trick, and now it works as it should. Anyway thanks again for your help.

Marcelo20XX

  • *
  • Posts: 7
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1403 on: 2018-11-22 06:45:07 »
Tirlititi I have a bug with the latest HW 0.4b. I cant change any line of code of the Evil Forest Exit (Where the moggle gives you the flute item) Function Main_Loop Field Script. Even a tiny change like adding more wait time to a command results in Zidane getting stuck in the middle of the ocean of the Mist Continent after the cutscene ends...

brucy

  • *
  • Posts: 39
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1404 on: 2018-12-07 16:10:27 »
@Tirlititi hi there , i have a suggestion to make the modding less time consuming : it could take hours to mod every single field of every single page ( i speak for experience :D , it was totally worthy , but really long and boring to do ) , so my suggesion is that you can add another page to all the sections of the program , the only difference is that the new page will apply the value to all the respective fields of all the other pages of the same section ; an example : you add the "global page" to the section of the magics , if you set "255" as a value for the damage , that value for the damage will be applied to all the magics , the same will happen to all the other values to write or to select if the only choiche are the selectable values , and for all the other sections of the editor , particulary for the enemies , so in short , add something that i could call a "global page" to apply or select the same value\string to all the values in that section at once , it can be very helpful even when you edit the shops or distrubute the items , or when modifying the characters
« Last Edit: 2018-12-07 16:20:44 by brucy »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1405 on: 2018-12-07 16:43:20 »
I don't really know why you would want to set the power value of all the spells to 255 at once. That doesn't seem useful at all.
However, for field scripts, I completely agree with you; I would like to add the batch importation of scripts in the future.

But I'm on a break right now with HW so it's not coming anytime soon, sorry.

brucy

  • *
  • Posts: 39
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1406 on: 2018-12-08 00:40:36 »
@Tirlititi  the reason for set 255 for all the power statistic is because i am exactly the opposite of a pro gamer , i play for fun , i don't treat a video game like some sort of purge , or an auto-punitive path in religious style , i want to be lethal , enemies aren't allowed to be crackerbox of better than the playable characters under my watch , also  if i like to have hard life i would do something different than play video games , i would find a job , or find a wife and so on , so at least i a video game i want to enjoy easy life , and clearly i don't accept the constant intrusive attitude of the nosy pro gamers that would like to feel entitled to establish for everyone how to play a video game , so yeah that's my point , of course i don't mind about how others play , so i expect the others to be equally respectful , after all the good thing of this program is that is suited both for pro gamers and for those that like me play a video game for the fun of it , but aside of this , the whole point of the "global buttons\fields\strings" is to just non waste hours :D , and of course i understand that you could have other things to care about
« Last Edit: 2018-12-08 00:44:01 by brucy »

Moogie

  • *
  • Posts: 15
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1407 on: 2019-01-01 01:24:06 »
Hi all. Every time I click the 'Edit Script' button, Hades crashes. It does this in both the Enemies and Environment tabs, no matter what I select. Is there any workaround? (40b, Win7 x64)

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1408 on: 2019-01-01 11:02:00 »
Hi Moogie.
No idea why this happens. It must be because the script archive got corrupted somehow...
Get back the original file "p0data7.bin". If you go on your Steam's library, right-click on FF9, then "Properties" and then "Local game files -> Check the integrity of game files", it will fastly download a fresh version of all the files that you modified (including "p0data7.bin") and replace the modded files by these unmodded files. You can then use HW on it.

Moogie

  • *
  • Posts: 15
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1409 on: 2019-01-04 00:05:44 »
Ah, my apologies for not specifying, but I was attempting this on the PSX version. Does this mean the script edit function is only available for the Steam/PC release?

Thanks for the reply, anyhow. :)

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1410 on: 2019-01-04 17:54:00 »
Ah, I don't know then. Last time I checked, I didn't have problems with scripts (the field names are all messed up however).

lyokoffx

  • *
  • Posts: 27
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1411 on: 2019-01-05 12:51:08 »
Code: [Select]
ffix_img_extr.exe "C:\Users\PC\Desktop\Nouveau dossier/to/ff9.im" "C:\Users\PC\Desktop\Nouveau dossier\Nouveau dossier/to/extract"
sorry I forgot this "" in my first post

can you answer me at my first post

I you a happy feedback on Hades Workshop

And thank you in advance

Deathcrush

  • *
  • Posts: 1
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1412 on: 2019-01-06 21:22:47 »
I saw in the first post where you can take out the timer for Excalibur II. I can't seem to find the part in the script that it mentions though. All I see is something about General Scenario Timer. Is this the same line of code, just written differently? I don't want to remove it and it cause issues with the game. Are there other ways, such as just adding it into the characters inventory? I tried adding it to a shop, but it didn't work.

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1413 on: 2019-01-07 16:59:38 »
@lyokoffx: You can't do more precise outlines with Background extraction because it's only in one piece. In the image you showed, the characters are always in front of everything (be it the floor, the back houses or the sky). The outlines are only done with respect to this issue: what is in front and what is in the back. As a consequence, the objects themselves are not always matching these outlines :/

About the img files extractions: now that you have them, you can use the tools of Zidane_2. Most of them ask for the folder where all these files are placed ("00", "01", etc...).

@Deathcrush: No, there is a variable "General_ScenarioCounter" but it is something different from "GetTime".
"General_ScenarioCounter" is a number that increases at various point of the game when the story progress. Typically, when entering a field for the first time (e.g. "Ice Cavern/Exit"), a cutscene triggers and the counter is increased to say that the cutscene was done and shouldn't trigger the next time entering the field.
"GetTime" really returns the in-game time in seconds.

The second part in the script must be in the function "Code3_Init" if I'm not mistaken.

lyokoffx

  • *
  • Posts: 27
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1414 on: 2019-01-07 19:49:44 »
I thank you very much for your help

1-indeed I noticed that the Background that I want to detach are link in a single layer and I verrify it in "Hades Workshop" Thank you very much

2 - you clarify me well

 whats is the tools that I must use because I can not find "DB_Extractor" in The Zidane_2 archive is there a replacement tool ???

3 - can you guide me for the search of thes Files where is the sound of the weapon and the mog ansi the displacement sound ansi of continuation

4 - I noticed that there is something interesont in this tools Zidane_2 if does not pose a problem cite months functionaliter of these tools As the visualizer of the 3D models the animation etc .. is what there is a compiler psx to get them together in one Image Psx ???

and thanks for everything

And thank you in advance

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1415 on: 2019-01-08 20:56:05 »
There is no DB_Extractor anymore: everything is done with ffix_img_extr.

There are 14 directories in the .img file, ffix_img_extr extracted them and, for those of type "DB" (Cluster Datas), also extracted the files that were contained in them. The weapon models and sounds are in the files of the directory 9.
Here is the list of what I know for these directories' purpose:
Code: [Select]
Directory1 : 21 files
  ???,SaveMenu,Battle,???,TetraMaster,
  ???,???,ChocoMenu,MenuComp+MenuEquip,MenuConfig,
  CardMenu,ItemMenu,StatusMenu,MainMenu,NamingMenu,
  TeamMenu,ShopMenu,???,???,???,BattleRewardMenu
Directory2 :
  Generic Cluster Datas (charmaps, backgrounds...)
Directory3 :
  Dialog & Text Cluster Datas
Directory4 :
  World Map Cluster Datas
Directory5 :
  Field Cluster Datas
Directory6 :
  Enemy Cluster Datas
Directory7 :
  Battle Scene Cluster Datas
Directory8 :
  Enemy Model Cluster Datas
Directory9 :
  Weapon Model Cluster Datas
Directory10 :
  Music Cluster Datas
Directory11 :
  Party Battle Model Cluster Datas
Directory12 :
  Audio Cluster Datas
Directory13 :
  Unknown
Directory14 :
  Spell Animation Datas
Directory15 :
  Dummy for directory ending

When you ran ffix_img_extr, you had some messages:
"Standart directory." -> the whole directory was extracted as a single file (it doesn't know how to split it into files),
"Files, many files." -> the directory was a Cluster Data and its files were extracted separatly.

If you don't have everything, try running the tool with administrator rights (it may happen that the tool doesn't have the right to create files at some place and it wouldn't pop any error in that case).

There's no tool to compile the files back into the PSX game, unfortunatly.

Incinerator

  • Guest
Re: [PSX/PC] General editor - Hades Workshop (0.40b) TUTORIAL LINK
« Reply #1416 on: 2019-01-09 06:55:46 »
In this tutorial I will show you how to initiate an extra scene for your player to do off the main story path.

First things first, you need find a location in the game you want to have your scene initiated. While you can virtually initiate a scene at nearly any point, it's wise to be caution as adding scenes during the middle of the main story can cause bugs and glitches if not carefully applied and tested.

In this scene, we will initiate our scene during Disc 4. Since most of the main storyline is completed, we'll have less road blocks and limitations at this time in the game.

Next is selecting a theme for the scene; some dialogue, a scenario to take place, any battles to initiate and rewards (if any) to be received par completing the quest.
You will be using a series of General Variables unused by the game. These variables are the base foundation of all your scenes as these are and can be used to determine your scene as active, inactive, or conditional. (Conditional: having the player needed do one task to the next in order to unlock a part or whole of your extra scene/quest).

In this example we'll use the extra scene from Final Fantasy IX-2 ~ Lavos Hunt. It's a intermediate scene not too complex but not too simple either.

I. Getting Started

In field: Alexandria/Dock (Field ID: 2458), we need to firstly initiate some character that will pose as our scene starter (in this case, it will be Steiner):

  • 1. In Hades Workshop, navigate to the Fields Tab and scroll down to Field Alexandria/Dock (Field ID: 2458)
  • 1a. Select "Edit Entries"
  • 1b. In the Entries Menu, scroll down and select "Steiner" and "Freya". *Because this field does not natively have Steiner or Freya initiated (par vanilla), we need to add them in manually)
  • 1c. Select "Edit Script"
  • 1d. In the Edit Script Window, under the "Functions" section, right-click and select "Add"
  • 1e. In the Properties Menu, for "Entry" select "Steiner"
  • 1f. For Entry Type, set the value "2". "2" means "object with model", standard for all 3D models initiated
  • 1g. For "Function Type" set the value "0". "0" means "main function". Every 3d model has an _Init function, which is used to create the 3D model in scene
  • 1h. Select "Parse", then "Ok".

*Note: When building scripts ALWAYS select "Parse" then "Ok". You will get a warning for any non-parsed scripts after select Ok.

Now we have a "Steiner_Init" function.
Add the following in the script space:

Code: [Select]
Function Steiner_Init
    SetModel( 5489, 104 )
    CreateObject( -222, -2015 )
    TurnInstant( 152 )
    SetStandAnimation( 2001 )
    SetWalkAnimation( 1996 )
    SetRunAnimation( 2005 )
    SetLeftAnimation( 1986 )
    SetRightAnimation( 2010 )
    SetObjectLogicalSize( 30, 35, 50 )
    SetAnimationStandSpeed( 14, 16, 18, 20 )
    SetHeadAngle( 97, 32 )
    EnableHeadFocus( 0 )
    return

The following arguments are described in the yellow help box to in right corner of the Edit Script Window provided by Tirlititi.

Now with this Function, Steiner is ready to be initiated in game.

Let's do the same for Freya: (Repeat steps 1d. through 1h.)

Code: [Select]
Function Freya_Init
    SetModel( 192, 94 )
    CreateObject( 186, -2179 )
    TurnInstant( 160 )
    SetStandAnimation( 2556 )
    SetWalkAnimation( 2553 )
    SetRunAnimation( 2558 )
    SetLeftAnimation( 2555 )
    SetRightAnimation( 2551 )
    SetObjectLogicalSize( 26, 34, 48 )
    SetAnimationStandSpeed( 14, 16, 18, 20 )
    SetHeadAngle( 105, 53 )
    SetPathing( 1 )
    EnableHeadFocus( 0 )
    return

Now we are ready to initiate Steiner in scene.

II. Function Main_Init

At the bottom of the script of Function Main_Init add the following:

Code: [Select]
    if ( VARL_GenBool_8038 == 1 ) {
        InitObject( 20, 0 )
    }
    if ( VARL_GenBool_8040 == 1 ) {
        TerminateEntry( 20 )
    }
    if ( VARL_GenBool_8041 == 1 ) {
        InitObject( 21, 0 )
    }
    if ( VARL_GenBool_8043 == 1 ) {
        TerminateEntry( 21 )
    }
    return

The following functions are conditional for how this scene will play out for the player.

The first function:

Code: [Select]
    if ( VARL_GenBool_8038 == 1 ) {
        InitObject( 20, 0 )
    }

Will initiate Steiner when the player reaches Alexandria/Dock.

Second function:

Code: [Select]
    if ( VARL_GenBool_8040 == 1 ) {
        TerminateEntry( 20 )
    }

Once the player speaks with Steiner, the script will set the Variable above with value "1", indicating the extra scene has begun, Steiner has left the Dock, and upon returning to the Dock, Steiner will be gone.

Third function:

Code: [Select]
    if ( VARL_GenBool_8041 == 1 ) {
        InitObject( 21, 0 )
    }

Once the extra scene's hunt battle is completed, the variable above is set to value "1", to indicate scene completed and upon the player's return to Alexandria/Dock, Freya will be initiated in scene to give the player their reward and end the scene.

Last function:

Code: [Select]
    if ( VARL_GenBool_8043 == 1 ) {
        TerminateEntry( 21 )
    }
    return

Terminates the entry of Freya's model once the player as obtained their reward, the variable value is set to "1" indicating the scene is now completed, no other actions needed.
Script should end with a return.

III. Building the heart of the Scene

Now they we've initiated Steiner and Freya in the field, we can proceed building the heart of scene with dialogues, actions and battles.

  • 3a. Navigate to Function Steiner_Init, right-click and click "Add"
  • 3b. For "Entry" select "Steiner", "Entry Type", enter value "2", "Function Type", enter value "3". "3" means "running on speak button". This will give the function: "Function Steiner_SpeakBTN" Which is used for the player to speak to main characters and NPCs. Select Ok
  • 3c. Navigate to Environment --> Texts. Scroll down to "Alexandria (Ruin)"
  • 3d. In the text box, right-click and select "Add". This adds a new text space for entry. *Note, if you're building straight from vanilla files, or Alternate Fantasy, these new text ids should be the same for you
  • 3e. Double click the newly created text space and enter the following in the "Edit Text" window

Code: [Select]
[STRT=15,4][STNR]
"Someone named [68C0D8][HSHD]Viera[C8C8C8][HSHD] was attacked in
 [68C0D8][HSHD]Burmecia[C8C8C8][HSHD], yet their belongings forfeit.
 I would have them returned."

*For each new text, add a new line.

Code: [Select]
[STRT=140,4][PCHC=2,1][IMME][STNR]
"The creature was [68C0D8][HSHD]Lavos[C8C8C8][HSHD]. Will you slay it?"
[CHOO][MOVE=18,0]Accept
[MOVE=18,0]Decline

*Functions [CHOO][MOVE=0,0] allows the player to select an optional decision for the dialogue. (This setting within the field script functions).

[STRT=0,0] Sets the length of the dialogue window. The first value sets the width of the dialogue window, (since the game calculates this on the float, you can set it as low as 15 or 10).
The second value sets the height of the dialogue window. This value is critical as the game does not set this on the float, and needs to be set accordingly or the dialogue window will not be long enough to fit all text in.
To determine the height of a dialogue window, count the number of lines of the entered text.


e.g.

Code: [Select]
[STRT=140,4][PCHC=2,1][IMME][STNR]
"The creature was [68C0D8][HSHD]Lavos[C8C8C8][HSHD]. Will you slay it?"
[CHOO][MOVE=18,0]Accept
[MOVE=18,0]Decline

This text is 4 lines long, so you enter [STRT=140,4] second value is "4".
*Function "[STNR]" is a character naming opcode which is used to enter the character's name in the dialogue set from the Naming Screen. If you enter in the character's vanilla names without the opcode, the character's name entered from the Naming Screen will not show.

Here's all the 8 main character's opcodes:

Code: [Select]
[ZDNE] "Set for Zidane"
[DGGR] "Set for Dagger"
[VIVI] "Set for Vivi"
{STNR] "Set for Steiner"
[FRYA] 'Set for Freya"
[QUIN] "Set for Quina"
[EIKO] "Set for Eiko"
[AMRT] "Set for Amarant"

*Code: [68C0D8][HSHD][C8C8C8][HSHD] sets a text color. There are a few other codes for this within the game.

Add the text for Alexandria (Ruin):

Code: [Select]
[STRT=15,4][STNR]
"Someone named [68C0D8][HSHD]Viera[C8C8C8][HSHD] was attacked in
 [68C0D8][HSHD]Burmecia[C8C8C8][HSHD], yet their belongings forfeit.
 I would have them returned."

[STRT=140,4][PCHC=2,1][IMME][STNR]
"The creature was [68C0D8][HSHD]Lavos[C8C8C8][HSHD]. Will you slay it?"
[CHOO][MOVE=18,0]Accept
[MOVE=18,0]Decline

[STRT=15,5][STNR]
"I am glad to know there is
 strength and honor even among
 you. I will lend my arm in the hunt
 of [68C0D8][HSHD]Lavos[C8C8C8][HSHD]."

[STRT=15,4][STNR]
"I shall await you in [68C0D8][HSHD]Burmecia[C8C8C8][HSHD] with
 [68C0D8][HSHD][FRYA][C8C8C8][HSHD]. I do not think the creature
 will have left."

[STRT=15,3]
                   [68C0D8][HSHD]Lavos[C8C8C8][HSHD][SPED=2]...[SPED=-1]
            [C8B040][HSHD]The hunt begins![C8C8C8][HSHD]

[STRT=15,3][STNR]
"We are victorious. No more
shall that beast roam freely."

[STRT=15,6][FRYA]
"Thank you. I could not have
 recovered past Viera's belongings
 without your help. I was fortunate
 to find such worthy aid. You have
 my gratitude."

[STRT=15,5][FRYA]
"The world is a wonderful place,
 filled with ideas as diverse as its
 people. Such individuality was not
 to be found on that steppe."

[STRT=15,2][STNR]
"I understand[SPED=2]...[SPED=-1]"

3. In function: "Function Steiner_SpeakBTN" enter the following:
*Mind not my description messages after the "\\" while pasting in your scripts, Hades Workshop will ignore the trailing.

Code: [Select]
Function Steiner_SpeakBTN
    DisableMove(  ) \\ Disables player movement.
    DisableMenu(  ) \\ Disable player accessing menus.
    if ( VARL_GenBool_8039 == 0 ) {
        TurnTowardObject( 19, 32 ) \\Turns the model to an object.
        WindowSync( 1, 128, 277 )  \\ Function for adding dialogue.
        set VARL_GenBool_8039 = 1
    }
    DisableMove(  )
    DisableMenu(  )
    WindowSync( 1, 128, 278 )
    if ( GetDialogChoice == 0 ) {
        set VARL_GenBool_8040 = 1 \\ set the variable with value "1" (to keep Steiner removed after accepting the hunt & initiating the follow up scene in Burmecia).
        WindowSync( 1, 128, 279 )
        WindowSync( 1, 128, 280 )
        FadeFilter( 6, 16, 0, 74, 74, 74 ) \\ Set a fade effect.
        RaiseWindows(  ) \\ Used for showing text on screen without a diagloue bubble.
        WindowAsync( 1, 16, 281 )
        RunSoundCode3( 53248, 1350, 0, -128, 125 ) \\ Run a sound effect.
        Wait( 70 ) \\ Wait some time (calculated in frames)
        RunSoundCode3( 53248, 789, 0, -128, 125 )
        Wait( 40 )
        CloseWindow( 1 )
        FadeFilter( 6, 16, VAR_GlobUInt8_17, 255, 255, 255 )
        EnableMove(  )
        EnableMenu(  )
        Wait( 16 )
        FadeFilter( 7, 16, VAR_GlobUInt8_17, 0, 0, 0 )
        TerminateEntry( 255 ) \\ Terimante the current function entry.
    } else {
        WindowSync( 1, 128, 295 ) \\ Steiner's text: "I understand..."
        TurnTowardObject( 10, 32 )
        EnableMove(  )
        EnableMenu(  )
        Wait( 16 )
    }
    if ( GetDialogChoice == 0 ) {
        FadeFilter( 7, 16, VAR_GlobUInt8_17, 0, 0, 0 )
    } else {
        TimedTurn( VAR_GlobUInt8_16, 16 )
        WaitTurn(  )
        EnableMove(  )
        0x27( 255 )
        EnableMenu(  )
    }
    return

The } else { function is used in dialogue cases like these; when the player select yes - do one action, else do another action.

IV. Adding Dialogue

4. In function: "Freya_SpeakBTN" enter the following:

Code: [Select]
Function Freya_SpeakBTN
    DisableMove(  )
    DisableMenu(  )
    TurnTowardObject( 19, 32 )
    WindowSync( 1, 128, 283 )
    AddGil( 7000 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 284 )
    AddItem( 38, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 285 )
    AddItem( 167, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 286 )
    AddItem( 225, 15 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 287 )
    AddItem( 226, 7 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 288 )
    AddItem( 227, 4 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 289 )
    AddItem( 228, 2 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 290 )
    AddItem( 229, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 291 )
    AddItem( 204, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 292 )
    AddItem( 222, 2 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 293 )
    AddItem( 300, 1 )
    RunSoundCode3( 53248, 3096, 0, -128, 125 )
    WindowSync( 1, 128, 296 )
    set VARL_GenBool_8043 = 1
    WindowSync( 1, 128, 294 )
    FadeFilter( 2, 12, 0, 255, 255, 255 )
    EnableMove(  )
    EnableMenu(  )
    Wait( 16 )
    FadeFilter( 2, 36, 0, 0, 0, 0 )
    TerminateEntry( 255 )
    return

Now we have our dialogue set and done for these field.

V. Executing the hunt

5. Navigate to field: "Burmecia/Suburb" (Field ID: 751)
*repeat steps  (Repeat steps 1b. through 1h.)

5a. In the Edit Script Window, Function Main_Init add the following at the end of the script:

Code: [Select]
    if ( ( VARL_GenBool_8040 == 1 ) && ( IsInParty(3) && IsInParty(4) ) ) {
        InitObject( 17, 0 )
        InitObject( 18, 0 )
        RunSoundCode( 0, 105 )
    }
    if ( VARL_GenBool_8042 == 1 ) {
        TerminateEntry( 17 )
        TerminateEntry( 18 )
    }
    if ( VARL_GenBool_8040 == 1 ) {
        FadeFilter( 2, 24, 0, 2, 181, 225 )
    }
    if ( VARL_GenBool_8041 == 1 ) {
        FadeFilter( 2, 24, 0, 0, 0, 0 )
        RunSoundCode( 0, 68 )
    }

Since our hunt requires Steiner and Freya to be in our party to proceed we need a conditional that reads:
If the hunt has been activated + Steiner and Freya is currently in the player's party; continue the quest hunt.
Once these conditions lye true, Steiner and Freya will be initiated into the field scene.

Code: [Select]
    if ( VARL_GenBool_8042 == 1 ) {
        TerminateEntry( 17 )
        TerminateEntry( 18 )
    }

This condition is activated once the hunt battle is complete, to prevent Steiner and Freya from appear after the completed scene.

Code: [Select]
    if ( VARL_GenBool_8040 == 1 ) {
        FadeFilter( 2, 24, 0, 2, 181, 225 )
    }

This function enabled a fade effect for the presence of Lavos in the area. (It can be removed for preference).

Code: [Select]
    if ( VARL_GenBool_8041 == 1 ) {
        FadeFilter( 2, 24, 0, 0, 0, 0 )
        RunSoundCode( 0, 68 )
    }

This function is conditional to remove the above fade effect once Lavos is defeated.

5b. Navigate back to Environments --> Text, scroll to Burmecia and add the following text:

Code: [Select]
[STRT=15,2][STNR]
"Good. You are come."

[STRT=15,3][FRYA]
"[68C0D8][HSHD]Lavos[C8C8C8][HSHD] is a great creature
 with massive scales. It will not be far. Come!"

[STRT=15,4][FRYA]
"We are victorious. I would reward
 you for your courage. Visit me back
 at Alexandria. I shall wait for you there."

5c. Add a "SpeakBTN" function to Freya_Init and add the following:

Code: [Select]
Function Freya_SpeakBTN
    DisableMove(  )
    DisableMenu(  )
    TurnTowardObject( 16, 32 )
    WindowSyncEx( 18, 1, 128, 338 )
    WindowSync( 1, 128, 339 )
    EnableMove(  )
    EnableMenu(  )
    RunScriptSync( 2, 17, 30 )
    RunScriptSync( 2, 18, 31 )
    return

5d. Navigate to field: "Burmecia/Palace" (Field ID: 766)
Under Function Main_Init, add the follow at the end of the script:

Code: [Select]
    if ( ( VARL_GenBool_8040 == 1 ) && ( IsInParty(3) && IsInParty(4) ) ) {
        InitObject( 16, 0 )
        InitObject( 18, 0 )
    }
    if ( VARL_GenBool_8042 == 1 ) {
        TerminateEntry( 16 )
        TerminateEntry( 18 )
    }
    if ( VARL_GenBool_8040 == 1 ) {
        FadeFilter( 2, 24, 0, 2, 181, 225 )
    }
    if ( VARL_GenBool_8041 == 1 ) {
        FadeFilter( 2, 24, 0, 0, 0, 0 )
    }

The same functions as before.

After adding Steiner & Freya Init functions, add a SpeakBTN function to Freya_Init and add the following:

Code: [Select]
Function Freya_SpeakBTN
    DisableMove(  )
    DisableMenu(  )
    WindowSync( 1, 128, 339 )
    Wait( 20 )
    RunSoundCode3( 53248, 789, 0, -128, 125 )
    Wait( 40 )
    RunSoundCode( 0, 77 ) \\ Run a BGM code.
    Battle( 1, 210 ) \\ Start a battle. (Battle ID: 210)
    DisableMove(  )
    DisableMenu(  )
    set VARL_GenBool_8041 = 1
    set VARL_GenBool_8042 = 1
    RunSoundCode( 256, 77 )
    WindowSync( 1, 128, 340 )
    FadeFilter( 2, 12, 0, 255, 255, 255 )
    Wait( 16 )
    EnableMove(  )
    EnableMenu(  )
    RunSoundCode( 0, 68 )
    FadeFilter( 2, 36, 0, 0, 0, 0 )
    TerminateEntry( 18 )
    TerminateEntry( 255 )
    return

Upon initiating a battle in this field, we need to add Function Main_Reinit. This function is required for all battles in fields, without it, the player will be frozen in place and unable to move afterwards.

Code: [Select]
Function Main_Reinit
    set VAR_GlobBool_159 = 0
    RunScriptAsync( 0, 250, 11 )
    if ( VAR_GlobBool_155 == 1 ) {
        ATE( 1 )
    }
    if ( VAR_GlobBool_158 == 0 ) {
        0x27( 127 )
    } else {
        0x27( 255 )
    }
    Wait( 2 )
    ShowTile( 5, 0 )
    ShowTile( 6, 0 )
    ShowTile( 7, 0 )
    ShowTile( 8, 0 )
    ShowTile( 9, 0 )
    ShowTile( 10, 0 )
    Wait( 2 )
    if ( VAR_GenUInt8_13 == 9 ) {
        SetTextVariable( 2, 0 )
        WindowAsync( 6, 0, 62 )
        RaiseWindows(  )
        WaitWindow( 6 )
        set VAR_GenUInt8_13 = 0
    }
    if ( VAR_GenUInt8_14 == 9 ) {
        SetTextVariable( 2, 1 )
        WindowAsync( 6, 0, 62 )
        RaiseWindows(  )
        WaitWindow( 6 )
        set VAR_GenUInt8_14 = 0
    }
    set VAR_GlobBool_159 = 1
    if ( VAR_GlobBool_158 == 1 ) {
        set VAR_GlobBool_158 = 1
        if ( VAR_GlobBool_159 == 1 ) {
            if ( VAR_GlobBool_156 == 0 ) {
                EnableMove(  )
                0x27( 255 )
                if ( VAR_GlobBool_144 == 0 ) {
                    EnableMenu(  )
                }
            }
        }
    }
    set VAR_GlobUInt8_30 = 127
    SetWeather( 24, 56 )
    if ( VAR_GlobUInt8_17 == 255 ) {
        set Op66(( GetData_12 - 160 ), ( GetData_13 - 112 ))
    }
    0xA9( 250 )
    FadeFilter( 7, 16, VAR_GlobUInt8_17, 0, 0, 0 )
    return

5f. Navigate back to field Alexandria/Dock (Field ID: 2458)

VI. Finalizing your Scene

6. Add a SpeakBTN function to Freya_Init and add the following:

Code: [Select]
Function Freya_SpeakBTN
    DisableMove(  )
    DisableMenu(  )
    TurnTowardObject( 19, 32 )
    WindowSync( 1, 128, 283 )
    AddGil( 7000 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 284 )
    AddItem( 38, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 285 )
    AddItem( 167, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 286 )
    AddItem( 225, 15 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 287 )
    AddItem( 226, 7 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 288 )
    AddItem( 227, 4 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 289 )
    AddItem( 228, 2 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 290 )
    AddItem( 229, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 291 )
    AddItem( 204, 1 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 292 )
    AddItem( 222, 2 )
    RunSoundCode3( 53248, 108, 0, -128, 125 )
    WindowSync( 1, 128, 293 )
    AddItem( 300, 1 )
    RunSoundCode3( 53248, 3096, 0, -128, 125 )
    WindowSync( 1, 128, 296 )
    set VARL_GenBool_8043 = 1
    WindowSync( 1, 128, 294 )
    FadeFilter( 2, 12, 0, 255, 255, 255 )
    EnableMove(  )
    EnableMenu(  )
    Wait( 16 )
    FadeFilter( 2, 36, 0, 0, 0, 0 )
    TerminateEntry( 255 )
    return

And that marks the end of your extra scene!
*If you want your scene to be repeatable, you can set your variable conditions back to value "0" somewhere and the process will begin again.

You can see another example of extra scenes in action here.

eugene9

  • *
  • Posts: 11
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1417 on: 2019-01-09 09:00:31 »
Hello! Just a short quick question. Is it possible to change Zidane's battle animation? I mean, Zidane using Cinna's animations, for instance.

Kefka

  • *
  • Posts: 202
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1418 on: 2019-01-09 15:34:43 »
Hello guys, I've got some more questions about stuff I'd like to edit in the source code with DnSpy and hope you can help me with that:

1) The item Soft instantly kills stone-type enemies, but the spell Stona does not. I always found that wierd. According to the BtlCalc file the soft item checks for the monster's category(case 62). Is there a way to make the Stona spell also kill stone enemies? I've tried changing the spell's formula from "Cure status" to "item:soft" in Hades Workshop, but that didn't help.

2) A loooong time ago, we were talking about altering the duration time of status effects, as they expire way to soon, as well as changing the poison/regen intervals (to make the combination of Auto-Haste and Auto-Regen less overpowered). Back then we didn't have a way to do anything about it, but what about now with DnSpy? Does anybody happen to know where this data is stored? I've looked through the Assembly_CSharp.dll and found some files that look promising according to their names, but I'm not sure as I can't read them properly. Inside the "btl_stat" folder, there are several entries related to status effects, named "CheckStatusLoop", or "RemoveStatuses" and such. I suppose there isn't a "readable" version of these somewhere around like there is for the BtlCalc file?

lyokoffx

  • *
  • Posts: 27
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1419 on: 2019-01-10 15:55:36 »
Thank you very much for your help

1- but I do not have these commands under cmd

"Standart directory." ->
"Files, many files." ->
I'm even trying to change the execution as an administrator of my file "ffix_img_extr" .exe

and I even launched cmd as administrator but I have fewer bugs this time

here is my order

Code: [Select]
ffix_img_extr.exe "C:\Users\PC\Desktop\folder\FF9.IMG" "C:\Users\PC\Desktop\folder/folder1"
and here is the argument that offers me



but I do not have an extension in my files



but the files are generated but this time with their directory folder



2- Another important question is how to convert the sound once created ???

And thank you in advance
« Last Edit: 2019-01-10 15:58:35 by lyokoffx »

WhiteMirage

  • *
  • Posts: 1
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1420 on: 2019-01-15 22:32:28 »
Hello ! :)

I'm trying to mod FFIX, using AlternateFantasy as a basis. At the beginning I just wanted to make Garnet as powerful as Eiko (by giving her useful new spells/eidolons like Holy, Esuna, Phoenix, Carbuncle etc...), but it was so fun to play with the game files that I decided to do a complete rework of Garnet, Zidane, Eiko, and Vivi (essentially by giving them new spells).

It looks like the game has no problem dealing with numerous spell changes, but as soon as I try to change the abilities linked to an item/weapon, the game stay stucked on a black screen when I start it. I don't really know what to do.

Here's my process:
- I have a freshly installed vanilla FFIX.
- I import the AlternateFantasy files.
- I open the game files with HW, I make some changes to the Spells and the Commands.
- I change the abilities given by some weapons to suit the changes I've just made to the spells (for exemple, I change the spells and abilities linked to the Rod or the Dagger).
- I save the mod, copy/paste it in the FFIX folder.
- I start the game... and it doesn't load, there's just a black screen.

I tried several things.
[Vanilla FFIX] Changing the abilities linked to weapons = the game works just fine.
[Vanilla FFIX] Changing both the spells and the abilities linked to weapons = the game works just fine.
[AlternateFantasy] Changing just the spells = the game works just fine.
[AlternateFantasy] Changing both the spells and the abilities linked to weapons = the game is broken.

I tried to import back the original Assembly-CSharp.dll (the one that comes with AlternateFantasy) and it made the game work again. The new abilities were there, but no change was applied to the weapons and gear I modified.
So... could someone help me please ? I don't really know what to do anymore. :(

(Oh and if you wonder: I use Alternate Fantasy as a basis because i'd like to experiment an harder version of FFIX, but more forgiving than FFIX Unleashed.)

« Last Edit: 2019-01-15 22:34:13 by WhiteMirage »

Kefka

  • *
  • Posts: 202
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1421 on: 2019-02-10 20:33:31 »
Hey tirlititi,

I just realised I haven't bothered you with detailed questions for a while, so here I go again, lol!

Anyway, I've been playing around with DnSpy again and I tried altering the damage calculation formulas for Frog Drop, Thievery, and Dragon Crest to also factor in the target's defense. Here's my code:

Code: [Select]
case 66:
{
CALC_VAR calc_VAR37 = calc_VAR;
calc_VAR37.tg_flags |= 1;
calc_VAR.df_pow = (short)target.defence.p_def;
if (ff.frog_no - calc_VAR.df_pow / 2 > 0)
{
if (calc_VAR.at_num < 1)
{
calc_VAR.at_num = 1;
}
int num22;
if (ff.frog_no != 0)
{

if ((num22 = (short)(caster.level * (ff.frog_no - calc_VAR.df_pow / 2))) > 9999)
{
num22 = 9999;
}
else
{
num22 = (short)(caster.level * (ff.frog_no - calc_VAR.df_pow / 2));
}
}
else
{
num22 = 1;
}
calc_VAR.tg_hp = (short)num22;
}
break;
}
case 67:
{
CALC_VAR calc_VAR38 = calc_VAR;
calc_VAR38.tg_flags |= 1;
calc_VAR.df_pow = (short)target.defence.p_def;
if (ff.steal_no - calc_VAR.df_pow > 0)
{
if (calc_VAR.at_num < 1)
{
calc_VAR.at_num = 1;
}
int num23;
if ((num23 = (ff.steal_no - calc_VAR.df_pow) * (short)caster.elem.dex / 2) > 9999)
{
num23 = 9999;
}
else
{
num23 = (short)((ff.steal_no - calc_VAR.df_pow) * (short)caster.elem.dex / 2);
}
calc_VAR.tg_hp = (short)num23;
}
break;
}
case 68:
{
CALC_VAR calc_VAR39 = calc_VAR;
calc_VAR39.tg_flags |= 1;
calc_VAR.df_pow = (short)target.defence.p_def;
if (ff.dragon_no - calc_VAR.df_pow > 0)
{
if (calc_VAR.at_num < 1)
{
calc_VAR.at_num = 1;
}
int num24;
if ((num24 = (ff.dragon_no - calc_VAR.df_pow) * ff.dragon_no) > 9999)
{
num24 = 9999;
}
else
{
num24 = (short)((ff.dragon_no - calc_VAR.df_pow) * ff.dragon_no);
}
calc_VAR.tg_hp = (short)num24;
}
break;

It's working fine so far except for one thing: When the enemy's defense is higher than the Number of steals/dragons/frogs, I experience some sort of 'damage underflow bug' and start dealing really wierd 10-digit damage numbers (or was it 12 digits? Don't remember.). Do you by chance know how to avoid this? If the enemy's defense is higher, I'd like the damage to be 0. I've copied the basic outline of the script from other attacks that deal 0 damage when the enemy's defense is too high, like Lancer, Drain or Osmose, and then merely adjusted the parameters accordingly to match my formulas. But I must be missing something important.

Edit: Nevermind, I figured it out! The code I posted turned out to be fine after all, but in my file I had an older version of the code, probably due to not saving properly last time.
« Last Edit: 2019-02-10 21:32:49 by Kefka »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1422 on: 2019-02-17 10:18:55 »
Hello everyone. Sorry for answering so late: I am off modding nowadays and had some tough work on top of that.

@eugene9: No, it's not really possible because the bones of each model are not linked the same as the bones of the other models.
With my debugging tests, it was possible to edit the animations using the Unity Assets Viewer (in the "Tools" menu). Modifying the animations may be the only model-editing feature that actually works (it bugs when you export/reimport meshes most of the time). So you should untick the option "Import Meshes/Materials" if you try it.
There are several proprietary tools allowing to make animations more or less easily. I guess that more free tools for that will be available eventually.

@Kefka: I don't know if you did it already, but you can add a "Stona-kill" like this:
Code: [Select]
case 12:
    if (FF9StateSystem.Battle.FF9Battle.add_status[(int)cALC_VAR.cmd.aa.AddNo]==2147483649u && btl_util.CheckEnemyCategory(target, CATEGORY_STONE))
    {
        if (btl_calc.CalcSub_12A(cALC_VAR)) // CheckPetrifyDeathMiss
        {
            btl_calc.SetEnforceHP0(target);
            UIManager.Battle.SetBattleFollowMessage(25, new object[0]); // "Became too soft to live."
        }
    } else {
        btl_calc.CalcSub_302(cALC_VAR); // DoRemoveSpellStatus
    }
With this, spells that cure exactly the statuses Petrify and Gradual Petrify will also kill stone enemies. Esuna will not.

For the duration of statuses, it's in the method "btl_stat::AlterStatus". Near the end of the method, you have this block:
Code: [Select]
if ((status & 4026466304u) != 0u)
{
short num6;
if ((status & 2601713664u) != 0u)
{
num6 = (short)(60 - btl.elem.wpr << 3);
}
else if ((status & 619446272u) != 0u)
{
num6 = (short)(btl.elem.wpr << 3);
}
else
{
num6 = (short)(60 - btl.elem.wpr << 2);
}
btl.stat.cnt.conti[(int)((UIntPtr)(num - 16u))] = (short)(status_data[(int)((UIntPtr)num)].conti_cnt * (ushort)num6);
}
That's the formulae to change for the duration. The first formula is for negative statuses, the second is for good ones and the last is the default (I think it's used for Berserk only). You can of course split the internal "if" blocks to have a formula specific to each status.

Congrats for modifying the damage formula of these other spells :)

@lyokoffx: I don't know :/
You should have files in those folders. Maybe you are using an ISO that ffix_img_extr.exe doesn't recognize... no idea.
Also, for the sound conversion, I don't know either (but that, I said it the very first time you asked for sounds).

@WhiteMirage: Here is the right way to proceed:
1) Start with a fresh vanilla FFIX.
2) Open the game files with HW.
3) Open the mod file "AlternateFantasy_v4.5.hws". In case you don't have it, it's here (since the last update, it's not packed together with the mod itself anymore).
4) Do all the modifications you want in HW.
5) Save the mod (both as .hws and as Steam files), copy/paste the Steam files in the FFIX folder.
6) Whenever you want to add other modifications, start again from a fresh vanilla FFIX and import your .hws instead. That's why I recommend to copy/paste FFIX's folder when modding, having a vanilla version that you open with HW and a modded version that you play with (and open with the Unity Assets Viewer).

I tried to make things work without bug when you proceed like you did, but apparently I failed to do so.

Also, you may want to have a look to the Readme.txt of the AF mod files because I also (slightly) mod the game with dnSpy.

lyokoffx

  • *
  • Posts: 27
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1423 on: 2019-02-17 14:32:24 »
Thank you for your support

1- I have the files without extension as in the screane in these folders
and I have the "converter.exe" that works anymore it says an appcrach message and in the error it is marked a msvcrt.dll

is there a solution to this problem
hat is this tool for ?

2- is there any spell templates in the image ff9.img

2- and what a tool to see his models and especially thé wall m'est ?

et merci d'avance
« Last Edit: 2019-02-17 15:14:06 by lyokoffx »

Tirlititi

  • *
  • Posts: 874
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.40b)
« Reply #1424 on: 2019-02-17 15:08:15 »
1- You can download msvcrt.dll on the internet ; it's a standard .dll. Put it in the directory of "converter.exe".
I don't remember what are Zidane_2's tools for individually.

2- There is no spell template. The spells are stored as raw data that HW can read and export as .hws files. Don't expect to find excel files inside PSX discs, if that is what you are asking.

2 bis- You can use FF9 Reverse made by tasior2 to see most of the 3D models of the PSX version.