Author Topic: [PSX/PC] General editor - Hades Workshop (0.41c)  (Read 339838 times)

lvb

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1575 on: 2019-08-11 12:19:48 »
Thank you very much for the help, Tirlititi

I don't know if the zip compile contains the localvariable which at first I don't know what is the use of it. I have open the LocalVariableSettings.hws and the code now seems a bit clear to understand. I'm not aware of it at first, thank you anyway.

Actually, I didn't plan to rework the Necron attack pattern script, I just want Necron to use all its skills beside Grand Cross, Neutron ring, and Blue Shockwave (it felt so monotone for me and less challenging if it only attacks with those 3 skills). I'm a bit confused that when I check the skill it had, there's more than Grand Cross, which are Thundaga, Firaga, Holy, etc but it still use only those 3 skills. So I recheck again at wiki and found out Necron had script which detects whose character using Reflect then he won't ever use any reflectable magic attacks (even after I unchecked the "reflect" and "return magic").

After I follow your suggestion to learn first Tantarian script (and I find it very easy to understand), I understood a bit how to read Necron's script. So then I just have to edit the "reflecttargetcheck" to make Necron use all its skills to attack by modifying:
Code: [Select]
        set #( reflecttargetcheck = RandomInTeam(( ( NotMatching(SV_PlayerTeam[STATUS_CURRENT_A], 257) & NotMatching(SV_PlayerTeam[STATUS_CURRENT_B], 64) ) & ( ~( Matching(SV_PlayerTeam[STATUS_CURRENT_B], 32) | Matching(SV_PlayerTeam[STATUS_AUTO_B], 32) ) ) )) )
        if ( !( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT_A], 4355) & reflecttargetcheck ) ) ) {
            set #( SV_Target = 0 )}

to

Code: [Select]
        set #( reflecttargetcheck = RandomInTeam(( ( NotMatching(SV_PlayerTeam[STATUS_CURRENT_A], 257) & NotMatching(SV_PlayerTeam[STATUS_CURRENT_B], 64) ) )) )
        if ( !( #( NotMatching(SV_PlayerTeam[STATUS_CURRENT_A], 4355) & reflecttargetcheck ) ) ) {
            set #( SV_Target = 1)}


assuming the SV_Target value is both 0 and 1 only (on/off), I modify it to  (assuming it will be activated even after the reflect checker detects them on 'reflect' or not). Up until now I still don't know why is there '& ( ~( Matching(SV_PlayerTeam[STATUS_CURRENT_B], 32) | Matching(SV_PlayerTeam[STATUS_AUTO_B], 32)' and don't know the meaning of 32. And because it's different than wiki (where there are no 'Matching' only the 'NotMatching'), I decided to remove them.

Problem solved. However, the multiple target magic attack only deals on 1 character. So I tried to relearn again the Tantarian's script, found out it's on the SV_Target. On Necron case it shows 1 (and my assumption is wrong, it's not the on/off value, but actually it's 'amount' value), then I edit it to 5 (just like Tantarian's 'Attack(5)' on 'default: set #( SV_Target = SV_PlayerTeam )' which I don't know the meaning of it and just try it). In my opinion, if Necron's multiple magic deals on 1 character equals to 'SV_Target = 1', and Tantarian's multiple attack deals on all 4 character, it should be equal to 'Attack(4)' (which I still don't know the meaning of 5 it has).

Then finally, all character can be damaged by modifying:
Code: [Select]
            set #( SV_Target = 1)
to

Code: [Select]
            set #( SV_Target = 5)

I agree that Necron's script case is a whole complicated one, but I do believe Ozma one will be the most complicated. Fortunately, all I want to do is minor modify.

Anyway, thank you so much for the help.
« Last Edit: 2019-08-11 12:22:36 by lvb »

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1576 on: 2019-08-12 12:39:16 »
SV_Target does not work like that.

"set SV_Target = 1" -> Only the 1st player's character is targeted (usually Zidane).
"set SV_Target = 2" -> Only the 2nd player's character is targeted.
"set SV_Target = 4" -> Only the 3rd player's character is targeted.
"set SV_Target = 8" -> Only the 4th player's character is targeted.
"set SV_Target = 16" -> Only the 1st enemy is targeted.
"set SV_Target = 32" -> Only the 2nd enemy is targeted.
"set SV_Target = 64" -> Only the 3rd enemy is targeted.
"set SV_Target = 128" -> Only the 4th enemy is targeted.
And then, you add numbers to have multiple targets. The whole player's party is thus targeted with "set SV_Target = 15" and not 5 (if you watch more carefully, you'll see that only two characters are affected when you use 5).
However, because the number of characters/enemies may vary, it is very unusual to use the numbers directly; oftentimes, "SV_PlayerTeam" or "SV_EnemyTeam" are used instead of "15" or "240" respectively. The "NotMatching" or "Matching" rules out characters not matching some conditions (the "32" means "Reflect": again, select that number and see how it converts to the "Status List B" which can be seen on the left of the window, inside the "Battle" panel). For single-targeted spells, a "RandomInTeam" is used.

The number used as an argument for the "Attack" corresponds to the attack in the attack list. Look at what's displayed on the right.

lvb

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1577 on: 2019-08-13 15:18:11 »
SV_Target does not work like that.

"set SV_Target = 1" -> Only the 1st player's character is targeted (usually Zidane).
"set SV_Target = 2" -> Only the 2nd player's character is targeted.
"set SV_Target = 4" -> Only the 3rd player's character is targeted.
"set SV_Target = 8" -> Only the 4th player's character is targeted.
"set SV_Target = 16" -> Only the 1st enemy is targeted.
"set SV_Target = 32" -> Only the 2nd enemy is targeted.
"set SV_Target = 64" -> Only the 3rd enemy is targeted.
"set SV_Target = 128" -> Only the 4th enemy is targeted.
And then, you add numbers to have multiple targets. The whole player's party is thus targeted with "set SV_Target = 15" and not 5 (if you watch more carefully, you'll see that only two characters are affected when you use 5).
However, because the number of characters/enemies may vary, it is very unusual to use the numbers directly; oftentimes, "SV_PlayerTeam" or "SV_EnemyTeam" are used instead of "15" or "240" respectively. The "NotMatching" or "Matching" rules out characters not matching some conditions (the "32" means "Reflect": again, select that number and see how it converts to the "Status List B" which can be seen on the left of the window, inside the "Battle" panel). For single-targeted spells, a "RandomInTeam" is used.

The number used as an argument for the "Attack" corresponds to the attack in the attack list. Look at what's displayed on the right.

Hello, sorry for late replying. I have some work to do.
Strange. I find that '5' has done some damage to all of the character in the team, however this is very useful information. Now I know how to use the SV_target value properly.
Actually, I'm aware the left panel were use to define the conditions. I did some change for the treasure item by looking at it, but in this case it was very confusing at first because when I hit on some number in the script, it defines some condition even if the number does not relate to 'item' or something else.

Now I get the point of how to hit on the right number so it will define the right condition (based on your short explanation above). Much appreciate it. I will update anything later including anything confuse me. For someone who had no idea of reading script your explanation was very much helpful. Thank you.

Incinerator

  • Guest
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1578 on: 2019-08-14 05:03:45 »
SV_Target does not work like that.

"set SV_Target = 1" -> Only the 1st player's character is targeted (usually Zidane).
"set SV_Target = 2" -> Only the 2nd player's character is targeted.
"set SV_Target = 4" -> Only the 3rd player's character is targeted.
"set SV_Target = 8" -> Only the 4th player's character is targeted.
"set SV_Target = 16" -> Only the 1st enemy is targeted.
"set SV_Target = 32" -> Only the 2nd enemy is targeted.
"set SV_Target = 64" -> Only the 3rd enemy is targeted.
"set SV_Target = 128" -> Only the 4th enemy is targeted.
And then, you add numbers to have multiple targets. The whole player's party is thus targeted with "set SV_Target = 15" and not 5 (if you watch more carefully, you'll see that only two characters are affected when you use 5).
However, because the number of characters/enemies may vary, it is very unusual to use the numbers directly; oftentimes, "SV_PlayerTeam" or "SV_EnemyTeam" are used instead of "15" or "240" respectively. The "NotMatching" or "Matching" rules out characters not matching some conditions (the "32" means "Reflect": again, select that number and see how it converts to the "Status List B" which can be seen on the left of the window, inside the "Battle" panel). For single-targeted spells, a "RandomInTeam" is used.

The number used as an argument for the "Attack" corresponds to the attack in the attack list. Look at what's displayed on the right.

I'm glad you showed that, because I've beaconed to have the enemy target a specific character!.

lvb

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1579 on: 2019-08-17 13:12:13 »
Hello, Tirlititi.
I have some problem with HW, but this is not the code thing probelm like I have posted before.

First, When I tried to 'Open Mod' my .hws save file (compiled completely from Spells to Fields) to the original clean game, it suddenly force close the Hades Workshop.
I try to find the cause by opening the hws once again and checking 1 by 1 category (from Spells, Items, then Enemies, etc) and once it open on the 'World Maps', HW closed itself with no loading bar at all (the loading bar with 'n/n' text)
I have unchecked 'including text' and 'including locals', and checked the text only, checked the locals only, still force closed.
So then the problems found while I open Mod the 'World Maps' only.

My FF IX game is clean with no mod except HW mods only.

Notes: In 'World Maps', I have some modified only on the 'Battle Spots' tab, to change what enemy should show on the specific places. And also I find that the 'battle spots' tab is actually loaded incorrectly at first opened the HW (e.g. on Battle Spot 1, Normal, Mist Continent, Grassland (Day), etc. the enemy selection shown a bit mess), but after I maximize the HW window, it loaded correctly. And it always like that whenever I open the HW and load the game.

Second, I want to combine the mods with Moguri Mod. However, after I successfully patched the Moguri Mod, and wanted to 'open Mod' my .hws to get my HW mods back after the Moguri patch by opening the FF9Launcher.exe file, it takes very long to load the HW data. I assume the HW won't work on the patched with any mods FFIX Launcher. So I decided to reinstall the game, and open mod my .hws on it, then the first problem above appeared.
I have downloaded the latest 0.41b HW.

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1580 on: 2019-08-17 20:44:30 »
First: that's absolutly impossible.
If the loading bar is not showing for the World Maps, it means that HW has bugs while loading the WM datas from the game. As long as the datas required are not loaded, the .hws file is barely checked (it's only checked to see the available sections, which works fine since you see them before confirming).
So either the loading bar shows up, or you have a file modded without you knowing it (most probable). The WM datas are mainly in the p0data3.bin archive.

Second: You should be able to open HW on the Moguri Mod except for the DLL changes.
In order to do that, you need a folder with:
1) A "FF9_Launcher.exe", whichever one (even a dummy file of 0kb would work as long as it's correctly named),
2) The archive files of the Moguri Mod (all the p0dataX.bin, the "mainData", "resources.assets" and all the "sharedassetsX.assets", the "levelX" shouldn't be needed except if you want to use the Unity Assets Viewer tool),
3) The "Assembly-CSharp.dll" of the normal game, unmodded (at least not modded by Memoria or the Moguri Mod).

Put all these files in sub-folders mimicking the directory of the game, select the "FF9_Launcher.exe" with HW and it should be alright.
When saving, choose the options "Spreadsheets" + "Unity Archives": the archives of Moguri should be generated correctly and there will be .csv files that can be read by Memoria.
The p0dataX.bin should go in the Moguri Mod's folder (that's where the modded archives are), something like "C:\Program Files\Moguri Mod\StreamingAssets".
The .csv files should also go in a Moguri Mod's subfolder, like "C:\Program Files\Moguri Mod\StreamingAssets\Data\Battle\Actions.csv".
The resources/sharedassets should go in the Steam's file folder, as usual.

I hope that it helps. Tell me if I'm wrong somewhere ^^'

anxietymafia

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1581 on: 2019-08-26 02:28:13 »
Is it possible to make Garnet use her short hair model on the field?

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1582 on: 2019-08-26 08:56:18 »
Unfortunatly, this is mainly hard-coded. You can change it using the tool dnSpy but not Hades Workshop only.
In dnSpy, open the Assembly-CSharp.dll, search for the following classes and methods and edit a few lines:

1) In the class "ModelFactory" and its method "CreateModel", there's this block:
Code: [Select]
if (ModelFactory.garnetShortHairTable.Contains(text))
{
ushort num = BitConverter.ToUInt16(FF9StateSystem.EventState.gEventGlobal, 0);
bool flag = num >= 10300;
if (flag)
{
// etc... Disable "long_hair" components
}
else
{
// etc... Disable "short_hair" components
}
}
Replace the "if (flag)" line by "if (flag && isBattle)".

2) In the class "EventEngine" and its method "DoEventCode" (that's a very long one), there is a "case EBin.event_code_binary.MODEL":
Code: [Select]
case EBin.event_code_binary.MODEL:
{
posObj.model = (ushort)this.getv2();
Obj expr_1EA4 = this.gExec;
expr_1EA4.flags |= 1;
posObj.eye = (short)(-4 * this.getv1());
if (this.gMode == 1)
{
string text = FF9BattleDB.GEO[(int)posObj.model];
posObj.go = ModelFactory.CreateModel(text, false);
GeoTexAnim.addTexAnim(posObj.go, text);
if (ModelFactory.garnetShortHairTable.Contains(text))
{
posObj.garnet = true;
ushort num7 = BitConverter.ToUInt16(FF9StateSystem.EventState.gEventGlobal, 0);
posObj.shortHair = (num7 >= 10300);
}
// etc...
Change the line "posObj.shortHair = (num7 >= 10300);" to "posObj.shortHair = false;".

There might be a third method to change, the method "addTexAnim" of the class "GeoTexAnim", but I am not sure if it is important or if it would mess up with the battle model.
And there would be a 4th one, "ff9play::FF9Play_GetSerialID", if you wanted to change her model in battles as well.

anxietymafia

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1583 on: 2019-08-26 10:08:27 »
Thanks so much for the reply,

Is this also possible for the psx version?

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1584 on: 2019-08-26 14:52:21 »
No, sorry.

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1585 on: 2019-09-08 22:10:52 »
I've been working with the tool for a while now and I'm trying to find a way around how Phoenix Downs interact with undead monsters.

Specifically I'm trying to find a way to make the item no longer bring the HP of undead targets down to critical HP levels. My initial thought was to have the item use the Life formula, but that doesn't appear to work since there's no hit rate section for items (unless I'm totally blind) and Phoenix Downs using the formula don't seem to work on dead allies either.

Part of the problem is that I still want to have undead targets take damage from restorative sources since I have at least one spell in the mod based around doing that, so taking away the undead type from enemies isn't something I want to do. I've also noticed that granting enemies Easy Kill status doesn't seem to make them immune to the effect either (which is wild to think about, honestly), so I'm not sure if there's something I'm missing to make this happen.

Worst case scenario I can just make Phoenix Downs really expensive so just chucking them at zombies and such isn't economically feasible, I mean if it's good enough for FF5 it's good enough for me, but I wanted to ask and see if there's something I'm missing.

Also, apologies if this has been asked before, I did a brief and possibly bad search and couldn't find anything.

« Last Edit: 2019-09-08 23:37:09 by Clem Fandango »

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1586 on: 2019-09-10 15:52:48 »
Hello Clem Fandango. Sorry I didn't see your message before.

It is not possible to do that without modding the battle engine. It can be done either with Albeoris's Memoria tool or with dnSpy, but not directly with HW (or only with added difficulties for no reason). In both case, it's a bit of C# coding.

Using Memoria, you need to change the script of Phoenix Downs (inside "Scripts/Sources/Battle/0072_ItemPhoenixScript.cs"):
Code: [Select]
public void Perform()
{
if (!_v.Target.CanBeRevived())
return;

if (_v.Target.IsZombie)
{
_v.Context.Flags |= BattleCalcFlags.Miss; // Add this line
return; // Add this line
// if ((_v.Target.CurrentHp = (UInt16)(GameRandom.Next8() % 10)) == 0) // Remove this line
// _v.Target.Kill(); // Remove this line
}
else if (_v.Target.CheckIsPlayer())
{
if (_v.Target.IsUnderStatus(BattleStatus.Death))
_v.Target.CurrentHp = (UInt16)(1 + GameRandom.Next8() % 10);

_v.TargetCommand.TryRemoveItemStatuses();
}
}

Using dnSpy, you need to change the method "btl_calc::CalcMain" and more specifically the "case 72":
Code: [Select]
if (Status.checkCurStat(target, 64u) || btl_util.CheckEnemyCategory(target, ENEMY.ENEMY_CATEGORY_UNDEAD))
{
calc_VAR.flags |= 1; // Add this line
// Remove the following lines, "if ((target.cur.hp = (ushort)(Comn.random8() % 10)) == 0)" and "SetEnforceHP0"
}
else if (btl_calc.CheckNotPlayerMiss(calc_VAR))
// etc... no change there

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1587 on: 2019-09-10 16:26:02 »
Hypothetically, were I to enact the change using dnSpy, would the HWS files used by Hades pick up that change? In other words, if I wanted to distribute a mod as an HWS file, would folks playing the mod still need to make the same changes in order for the Phoenix Down change to be in effect? I'm just trying to figure out which way I should go about this while making it as seamless as possible should I choose to release a mod.

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1588 on: 2019-09-10 18:05:35 »
No, the .hws wouldn't hold that change.
That's a real problem for me as well as I would largely prefer to have only 1 file for the mod, but the nature of the change is just not embeddable in a .hws... so I decided that I would distribute the C# code as well (generating the mod then requires Memoria or dnSpy in addition to HW).
Using Memoria, it's simply a .cs file to share in addition to the .hws (and then I think that you need to run Memoria's script compiler, but that's easy).

In any case, the default way to share a mod is not to share the .hws (+ maybe C# code) but to share the generated Steam files (p0data, DLL...).
Even if it creates mod compatibility problems, that's the easiest way to do it, both for the modder and the user.

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1589 on: 2019-09-10 18:43:47 »
Thanks for the reply, I was afraid this might make things kind of complicated. I think for the moment I might keep working on other stuff and leave this towards latter parts of this whole process. It's generally not a showstopper for what I'm working with, but I'll definitely need to consider it further if I ever end up releasing anything.

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1590 on: 2019-09-20 02:50:45 »
I've got a question regarding spell sequencing that I didn't see mentioned anywhere in the FAQ.

Is it possible to take a spell that normally has animations set to one target to affect multiple targets instead?

For a specific example (not to mention exactly what I'm trying to change) is something like Shell. The Shell animation in the game only hits one target. What I'm hoping is possible is set the spell sequencing so that the Shell animation hits every target in the party in sequence, similar to how something like Mighty Guard works. I'm not even entirely sure if this is possible due to engine limitations and my experiments in making it do this through editing spell sequencing has generally resulted in crashes. I'm under the impression that this isn't doable, but I wanted to check in this thread first.

It's not a huge issue and if it's not possible I'll probably just opt for the Mighty Guard animation instead or something similar. I've just found through play testing that there's never really any ideal situation to cast just Shell or Protect; both effects don't last very long even in ideal circumstances and while the bonus they have is nice, it's not super necessary in vanilla and I wouldn't want to wind up making it mandatory either. It's fairly weak for a single target buff.

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1591 on: 2019-09-22 14:41:52 »
It's not possible to make it look nice, unfortunatly :/
The spell animations are the biggest black box of the game now because it's delegated to an external DLL in the Steam version and I can't access its source code, either to see how it works or to modify them (all the possibilities and informations for that section were obtained the old way: guessing and testing).

You may however make Shell's animation hit all the targets in effectivity. For that, you simply need to change the line "Effect Point: 1st target" to "Effect Point: all targets" in its Spell Animation sequence. It will only display the effect on the 1st character though... so I guess that Mighty Guard's animation is still a better choice anyway.

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1592 on: 2019-09-29 00:43:00 »
Ah, okay. Thanks, I appreciate the detailed description.

Also I realized there was an easy workaround for the whole Phoenix Down undead thing I mentioned a couple weeks back: I can just change the targeting so that enemies cannot be targeted with Phoenix Downs, it seems so obvious in retrospect.

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1593 on: 2019-10-09 02:02:28 »
I've got another question that I haven't been able to find an answer for, either here or on the Steam page.

I've learned how to change the content of Chocograph contents, which is great. I'm wondering if it's possible to restrict when certain Chocographs can be obtained. Specifically I was hoping to be able to push the choocgraph that grants the Ocean movement to being only obtainable after Gulug and the final piece of the flight chocograph to be obtained only after Ipsen's castle, or possibly even into Disc 4. I've looked through various scripts, but the truth is that I don't really know where I should be looking or what it is I'm looking for. Is this even doable in the first place?

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1594 on: 2019-10-09 18:10:20 »
At some point, I wanted to register the local variables of the Hot & Cold scripts but it is quite a big system and that work went on standby...
The main function (the one deciding the reward at least) is "Barrel_41" in the Chocobo Forest, "Barrel_38" in the Lagoon and "Barrel_46" in Air Garden. It's always the same. Here is that function with most of variables given a name.

The part you're interested in is close to the top of the function:
Code: [Select]
            switch 3 ( Chocobo_ChocoColor ) from 1 {
            case +0:
                if ( Hot&ColdField == 1 ) {
                    set ChocographAvailableList |= 8 // 4th Chocograph (Yellow to Light Blue)
                    set ChocographLastAvailableFlag = 1
                }
                break
            case +1:
                if ( ( Hot&ColdField == 2 ) && ( Global_ScenarioCounter >= 9400 ) ) {
                    set ChocographAvailableList |= 2048 // 12th Chocograph (Light Blue to Red)
                    set ChocographLastAvailableFlag = 1
                }
                break
            case +2:
                if ( ( Hot&ColdField == 1 ) && ( Global_ScenarioCounter >= 9400 ) ) {
                    set ChocographAvailableList |= 8192 // 14th Chocograph (Red to Deep Blue)
                    set ChocographLastAvailableFlag = 1
                }
                break
            default:
                set ChocographLastAvailableFlag = 0
                break
            }
Without renamed variables (as it appears in Hades Workshop), it's this part:
Code: [Select]
            switch 3 ( Chocobo_ChocoColor ) from 1 {
            case +0:
                if ( Chocobo_CurrentField == 1 ) {
                    set VAR_GenInt24_172 |= 8
                    set VAR_LocUInt8_8 = 1
                }
                break
            case +1:
                if ( ( Chocobo_CurrentField == 2 ) && ( General_ScenarioCounter >= 9400 ) ) {
                    set VAR_GenInt24_172 |= 2048
                    set VAR_LocUInt8_8 = 1
                }
                break
            case +2:
                if ( ( Chocobo_CurrentField == 1 ) && ( General_ScenarioCounter >= 9400 ) ) {
                    set VAR_GenInt24_172 |= 8192
                    set VAR_LocUInt8_8 = 1
                }
                break
            default:
                set VAR_LocUInt8_8 = 0
                break
            }
So you see, you only need to increase the scenario counter lower bound for this special chocograph availability. Here are a few key scenario counter values (the first ones are named in the game's source code and I'm not always sure of the meaning, the last ones are values I searched myself in different field scripts):
Code: [Select]
SC_COUNTER_ARMOR_BLANK_START = 1500
SC_COUNTER_ARMOR_BLANK_END = 1600
SC_COUNTER_WMTITLE_BUNMEI_ON = 2400
SC_COUNTER_SGATE_DESTROYED = 2990
SC_COUNTER_CLAY_DESTROYED = 4990
SC_COUNTER_LIND_DESTROYED = 5598
SC_COUNTER_FOG_END = 5990
SC_COUNTER_KUROMA_APPEAR = 6200
SC_COUNTER_DAGGER_AWAKE = 6875
SC_COUNTER_SGATE_RECOVER = 6990
SC_COUNTER_ALEX_DESTROYED = 8800
SC_COUNTER_SUNA_MAKYU_ON = 9450
SC_COUNTER_WMTITLE_NEW_ON = 9600
SC_COUNTER_SUNA_MAKYU_OFF = 9890
SC_COUNTER_CUT_HAIR = 10300
SC_COUNTER_GET_HILDA3 = 10400
SC_COUNTER_HOKORA_START = 10600
SC_COUNTER_HOKORA_END = 10700
SC_COUNTER_LAST_WORLD = 11090

Hilda Garde obtained = 10400
Ipsen Castle entered = 10500
Ipsen Castle done = 10600
Eiko+Dagger gone to Shrine = 10620
Amarant+Freya gone to Shrine = 10640
Steiner+Vivi gone to Shrine = 10660
Shrines done = 10700
Disc 4 = 11100
« Last Edit: 2019-10-09 18:19:53 by Tirlititi »

Clem Fandango

  • Fast newbie
  • *
  • Posts: 7
  • Karma: 0
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41b)
« Reply #1595 on: 2019-10-09 22:45:37 »
Well how about that! This is great, I look forward to playing around with this. Thanks for the quick reply!

Tirlititi

  • Freak
  • *
  • Posts: 604
  • Karma: 79
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1596 on: 2019-10-16 16:32:17 »
Update to v0.41c:
- Added script file batch importing: you can now write script functions with your favorite text editor and import it back when you're done,
- Fixed bugs with text and UI text batch importation; also, the text IDs now start from 0 instead of 1 in the exported batches (so they match with the text ID inside scripts),
- Added more unused/dummied datas (for enemies mainly) that can be recycled when modifying the game's source code; also added enemy attack targetting informations (they are mostly unused, except for deciding if Cover triggers if I'm not mistaken),
- Listed more script functions and general variables in the script editor,
- Fixed a bug with Qu's Marsh's dialogs (it was actually caused by a "mobile" version of the dialogs; I think it's unused),
- In the Randomizer, the Prison Cages' "Absorb" spell is not randomized anymore,
- Fixed another bug with spell animation sequencing.

I am retiring from FF9 modding (presumably definitively). I don't think that I'll update this tool any further. The code is on Github though and I'll still answer questions, so here you go.