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

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1725 on: 2020-05-23 14:11:29 »
DV, friends, if you notice any problem in the game engine (equipment is incorrectly displayed) or in the Memoria (music is not exported), do not hesitate to write about it:
https://github.com/Albeoris/Memoria/issues


I didn't report this issue atm because I don't know if the problem comes from my side or from Memoria.
I will test tomorrow on my laptop : if the problem happens again, I'll open a ticket on Github :)

By the way, i have a question (for Tirlititi) : it's possible to know exactly which sound effect (.akb files from p0data62 or p0data63) is used by a spell animation ?
I try to find this information on "Environment/Spell Animations"... it doesn't seem to be there (or i can read this kind of information)

For example, can't find SFX files for Thunder Slash (Steiner/Beatrix).
« Last Edit: 2020-05-23 15:01:04 by DV »

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1726 on: 2020-05-23 20:39:02 »
Found it. Their list is in the file "SpecialEffectMetaData.txt" in the resources.assets.
They are listed depending on the special effect (there are usually many of them for a single special effect). For instance, sounds used by Thunder-Slash-1 (ID 191) are:
Code: [Select]
Sounds03/SE50/se500228
Sounds03/SE50/se500229
Sounds03/SE50/se500230
It's the exact same sounds used for Thunder-Slash-2 and Thunder-Slash-3. I don't know if you have access to the spell effect IDs in HW (I think not) but they are listed there.

If I understood correctly, sounds in the meta-data are listed by their order of usage.

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1727 on: 2020-05-23 20:56:22 »
It's the exact same sounds used for Thunder-Slash-2 and Thunder-Slash-3. I don't know if you have access to the spell effect IDs in HW (I think not) but they are listed there.

If I understood correctly, sounds in the meta-data are listed by their order of usage.

Oooooohhh... perfect ! That's what i need !  ;D

Indeed, theses IDs are not available on "Spell Animation" but now, that's will be perfect to fix somes crappy sounds (like Thunder Slash or when Steiner cast something... rip my ears)

Thank you again Tirlititi  :)

aidolu12

  • *
  • Posts: 7
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1728 on: 2020-05-27 01:19:19 »
As always, thanks Tirlititi for Hades Workshop.

I am not an expert on programming, I have been trying to modify formulas, so there is already two for strenght and magic based attacks:

( (power-defense) * random[str or mg, str or mg + (level + str or mg)/8]

I would like to add (or replace) a formula like this but based on speed. I tried using dnSpy, but when I compiled i got multiple errors on btl_calc... I saw the error list and the errors comes from others lines completely different from the ones i was modifying, so I though it might be compatibility issues or it is me who is commiting the mistake.

Would anybody help me on this topic to see if is it possible to do this modification?

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1729 on: 2020-05-27 11:18:09 »
These are common (and very tedious) errors triggered by dnSpy... For some reason, it doesn't accept many implicit type-cast although it forgets to write them when generating the C# code before you're allowed to edit it.
Eg.:
Code: [Select]
uint i = 1;
ushort u1 = i;
ushort u2 = i+1;
This will possibly be an error for both u1 and u2 because they don't have the proper byte length. The fix for that is to force the type-cast:
Code: [Select]
uint i = 1;
ushort u1 = (ushort)i;
ushort u2 = (ushort)(i+1);
Since the problem repeats everytime you try to edit a method or a class (even if you already fixed it on a previous edit), I took the habit to copy-paste codes in my text editor and do the changes there, then copy-paste back the code in dnSpy and keep the code saved somewhere for subsequent modifications.

For the class btl_calc, you can use my dropbox version (if you don't use Memoria): it has fixes for these dnSpy errors and makes things more readable without any change in the system.
« Last Edit: 2020-05-27 14:41:03 by Tirlititi »

aidolu12

  • *
  • Posts: 7
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1730 on: 2020-05-27 13:22:38 »
I think I understand. Thanks.

BTW, when i open the link you sent me, it says that the folder "Public/FinalFantasyIXCode" does not exist.

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1731 on: 2020-05-27 14:41:37 »
Thanks, I copied a wrong link and used a wrong tag indeed ^^"
I fixed the link now.

aidolu12

  • *
  • Posts: 7
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1732 on: 2020-05-27 15:02:20 »
Awesome, already followed what you told me before you fixed the link.. I did it! I added a formula bases on speed!, i just finished the testing.

First thing was to add a method, cause I saw the STR and MAG formulas also had one, and then had to put it on CalcMain for this to have effect. I took the "unused" ones that appears on the Hades Worskhop list ("unused 78" and so on).

Now I need to mix it with the weapon attack. I know there are formulas for weapon attacks, the issue with them is that they do not count the power on the spell, so it does not matter how much power I add, the damage is about the same.

I was looking into the programming on drain, it seems that they equal the calculated amount for damage to the absorbed caster hp, that way they could put in on one line. I would experiment a little bit to make the same, but instead of absorbing the damage, it just recovers 5% of the caster max hp.

Clem Fandango

  • *
  • Posts: 32
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1733 on: 2020-06-01 00:36:16 »
Hey Tirlititi, I've got a peculiar issue that I'm hoping has an easy answer that I'm missing.

For context, I'm trying to add new enemies to battles, largely to increase the number of battles with multiple opponents in the end game, since FF9 tends to be kind of deficient with that sort of thing. So I've been creating new versions of monsters from different parts of the game with increased stats, attacks and so forth. This has been going rather well, except for one thing: I'm trying to increase the sizes of the monsters.

I have already been able to do this to original monsters in the game (for instance making the Gigan Toad much larger than usual) and it works fine with no bugs I can see. When I do the same thing to monsters I have produced, this results in a very obvious problem: when the battle loads, not only would the monster in question be increased in physical size, so does Zidane. He becomes HUGE.

The size modification that I've been using is the same one found in Torama's loop script. This is what it looks like for the working Gigan Toad:

Code: [Select]
Function Gigan_Toad_Loop
    while ( !( GetBattleLoadState & 8 ) ) {
        Wait( 1 )
        set VAR_GenUInt8_206 = GetRandom
    }
    set SV_FunctionEnemy[MODEL_SIZE] =$ 6144
    set SV_FunctionEnemy[STOP_ANIM] =$ 2
    set SV_FunctionEnemy[PLAY_ANIM_ONCE] =$ 0
    return

And it works perfectly fine. What I'm using for my own monsters is not unlike that, so for example:

Code: [Select]
Function Plastique_Loop
    while ( !( GetBattleLoadState & 8 ) ) {
        Wait( 1 )
        set VAR_GenUInt8_206 = GetRandom
    }
    set SV_FunctionEnemy[MODEL_SIZE] =$ 6144
    return

The monster increases in size as expected, but this produces BIG ZIDANE, who is very amusing but not really what I'm looking for.

I've been fiddling with this on and off for about a week and I'm not entirely sure what I'm missing. Any idea what I have done wrong?

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1734 on: 2020-06-01 05:23:46 »
I have 2-3 questions as well ^^

1°) About this part "Properly adding a new enemy to a battle (Steam), i make a special combat with 4 Ghosts (1 King and 3 Minions) : however, they have same stats (i can bypass this with SV_FunctionEnemy so np).

But i can't modify drops for Ghost King for example... it will alter the drops of all the ghosts as well. So my question is : it's possible to separate 2 ennemis with same model, to make 2 distincts ID (something like that) ?

I see the game can do that, some examples with Zaghnol/Mu/Feng from Lindblum or monsters from Treno Arena : there is a way to make that ?

2°) About SV_FunctionEnemy, i see you can edit elemental affinities on battle with SV_FunctionEnemy[ELEMENT_IMMUNE], SV_FunctionEnemy[ELEMENT_WEAK], SV_FunctionEnemy[ELEMENT_ABSORB] and SV_FunctionEnemy[ELEMENT_HALF] (ex : Malboro script)

But i can't edit status effect with SV_FunctionEnemy (STATUS_IMMUNE, STATUS_AUTO and STATUS_CURRENT)... i can read the value in battle (with a Battle Text) but can't find a way to change the value  :-\ is there any way to change that or not by chance?

3°) Not a HW question but.... where i can find all monster attacks SFX from PSX ?  :-D Try to search on .iso/.bin PSX games but... damn ^^ Can't find theses files !

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1735 on: 2020-06-01 11:53:48 »
@Clem Fandango: I don't know that bug.
Are you sure that this "loop" function is what makes Zidane big? If you remove it (or keep only "return"), then both the monster and Zidane get regular sized?
If yes, you can try to use something like this instead of "set SV_FunctionEnemy[MODEL_SIZE] =$ 6144":
Code: [Select]
set 16[MODEL_SIZE] =$ 6144Use "16" for the first enemy, "32" for the 2nd, "64" for the 3rd and "128" for the 4th. It may be not the best way to do (if you have several Plastique in the fight, they share the loop function... there should be no problem having a line for each one of them). At least, you can see with that if the problem comes from "SV_FunctionEnemy" for some reason.

Also, double-check that your enemy groups have the correct number of enemies (and with proper enemy type) and that the "Main_Init" function creates them properly as well, with the correct IDs.

@DV:
1°) Yes, there should be no problem copy/pasting a Ghost in the list of enemies for that battle so you have two different Ghosts; the game doesn't care if they have the same models or such... Just maybe uncheck the option "Edit similar enemies" when you do that. Once your super-ghost is given a different level or name, though, you can enable back that option because it won't be considered similar to the other ghosts by HW anymore.

2°) You can't do that by default unfortunatly :/
It goes down to the functionalities implemented in btl_scrp. You can see that you can access to the status properties ("GetCharacterData", cases 42-45) but can't modify them ("SetCharacterData", there's no cases 42-45). In AF's source files, there are codes for improving that part though and, in particular, let scripts be able to do that, so you can mod the DLL to add (at least) that feature and then use it in your HW scripts. I am not sure how we will implement all the features I need for AF in a next version of Memoria but it can be safely assumed that for statuses it will be implemented like that (for the new features that were not present at all, such as modifying a spell's stat during the battle, I may make it optional or external...).

3°) The 3D models of their attacks' SFX? You can't. They are not in a format that could be recognized by any model ripping software :/
However, Tasior2's FF9 Reverse tool was able to get a couple of very specific SFX models very well, but it's limited (IIRC, the "Correct answer" and "Wrong answer" SFX of the Ragtime Mouse were amongst the only ones to be read thanks to it).

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1736 on: 2020-06-01 18:59:34 »

@DV:
1°) Yes, there should be no problem copy/pasting a Ghost in the list of enemies for that battle so you have two different Ghosts; the game doesn't care if they have the same models or such... Just maybe uncheck the option "Edit similar enemies" when you do that. Once your super-ghost is given a different level or name, though, you can enable back that option because it won't be considered similar to the other ghosts by HW anymore.

I never see this option to "Edit similar enemis"..... i am blind lol.
That's perfect o/ Thanks !

2°) You can't do that by default unfortunatly :/
It goes down to the functionalities implemented in btl_scrp. You can see that you can access to the status properties ("GetCharacterData", cases 42-45) but can't modify them ("SetCharacterData", there's no cases 42-45). In AF's source files, there are codes for improving that part though and, in particular, let scripts be able to do that, so you can mod the DLL to add (at least) that feature and then use it in your HW scripts. I am not sure how we will implement all the features I need for AF in a next version of Memoria but it can be safely assumed that for statuses it will be implemented like that (for the new features that were not present at all, such as modifying a spell's stat during the battle, I may make it optional or external...).

Oh ok, i just discover that when testing an IA Boss so... that's not important ^^ Thanks for the clarification !

3°) The 3D models of their attacks' SFX? You can't. They are not in a format that could be recognized by any model ripping software :/
However, Tasior2's FF9 Reverse tool was able to get a couple of very specific SFX models very well, but it's limited (IIRC, the "Correct answer" and "Wrong answer" SFX of the Ragtime Mouse were amongst the only ones to be read thanks to it).

Woops ! I didn't mean SFX but Sound Effect... sorry  ;D
Somes sounds effects on Steam version are... yeah that's something. For example Lancer/Ryuken from Freyja, i swear i can hear a dolphin dying at the end  :o :-D Wth.

I found a .zip with all sounds effects from Characters but can't find from Monsters... any idea to get theses files ?

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1737 on: 2020-06-01 20:20:35 »
Sounds are AKAO, which is a common format to at least FF7/FF8/FF9. I guess there are programs to rip them yes, although I've never cared about it (there are a couple of people who extracted all the PSX sounds though so that's definitely possible).

Clem Fandango

  • *
  • Posts: 32
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1738 on: 2020-06-03 02:21:25 »
@Clem Fandango: I don't know that bug.
Are you sure that this "loop" function is what makes Zidane big? If you remove it (or keep only "return"), then both the monster and Zidane get regular sized?
If yes, you can try to use something like this instead of "set SV_FunctionEnemy[MODEL_SIZE] =$ 6144":
Code: [Select]
set 16[MODEL_SIZE] =$ 6144Use "16" for the first enemy, "32" for the 2nd, "64" for the 3rd and "128" for the 4th. It may be not the best way to do (if you have several Plastique in the fight, they share the loop function... there should be no problem having a line for each one of them). At least, you can see with that if the problem comes from "SV_FunctionEnemy" for some reason.

Also, double-check that your enemy groups have the correct number of enemies (and with proper enemy type) and that the "Main_Init" function creates them properly as well, with the correct IDs.

Thanks for the assist Tirlititi, that alternative did the trick.

It was definitely the SV_FunctionEnemy causing the issue, seemingly. If I removed that one line or otherwise just left the Loop function to return, both the monster and Zidane would go back to their regular size. Main_Init was okay too, the monsters were behaving as they were supposed to and there wasn't anything amiss otherwise. Very weird!

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1739 on: 2020-06-06 07:38:02 »
I have a little question Tirlititi : currently, i create/edit some moves to make combo attacks (serious lack on FFIX).

But i have a little issue... juste here :



I use "Effect Point" on "Edit Animation" for each hit. Of course that's works but it missing something : showing damage HP for each hit.

With spell animation, it's pretty simple to make this kind of manipulation.
However, with basic enemy attack... it's only show the last hit.

So my question : you think it's possible to show HP value for each hit ? (maybe with DnSpy or something, to edit Effect Point or by using another trick/idea  ;D).

If this is not possible or too complicated, no worries! I'll do without ^^
Thanks in advance !
« Last Edit: 2020-06-06 14:25:46 by DV »

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1740 on: 2020-06-06 12:43:58 »
I can't see your image.
For Enemy Spell Animations, it all depends on how the effect is triggered. The "Run Spell Animation" and "SFX" codes should give the hand to a generic "Spell Animation" and thus show the numbers every time. However, for both of them, it's not possible to have two different generic "Spell Animations" running at the same time. I could make a two-hit attack with Kraken using a "SFX" after a "Run Spell Animation" (Bubble-gun + Leg), but it requires some time gap between the two to have them work correctly.

For the "Effect Point" of Enemy Spell Animations, it doesn't seem to ever trigger the "Figure point" by itself. You can indeed change that using dnSpy to change that behaviour. The simplest is to display the figures at the same time as applying the effect (it may look a bit odd because the figures are usually delayed a bit, but it makes things way simpler). In the method "btlseq.SeqExecCalc", add a "btl2d" line:
Code: [Select]
public static Int32 SeqExecCalc(SEQ_WORK pSeqWork, BTL_DATA pMe)
{
btlseq.BattleLog("SeqExecCalc");
CMD_DATA cmdPtr = pSeqWork.CmdPtr;
UInt16 tar_id = cmdPtr.tar_id;
for (BTL_DATA next = FF9StateSystem.Battle.FF9Battle.btl_list.next; next != null; next = next.next)
{
if ((next.btl_id & tar_id) != 0)
{
btl_cmd.ExecVfxCommand(next); // Effect point
btl2d.Btl2dReq(next); // Figure point
}
}
pSeqWork.CurPtr++;
return 1;
}
I didn't test it but that should be ok.

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1741 on: 2020-06-07 09:18:10 »
I thought it would be a pain to solve this problem but you just need one Tirlititi to solve it in a few minutes... incredible, you impress me ahah!

It works perfectly  ;D... except during my tests : I've just learned something... SFX does the damage too! (I get double damage for each hit, i didn't understand at first  ???)

So, when I use SFX instead of Effect Point, I have the same problem: the damage is only shown for the last SFX applied.

EDIT : I just read again your sentence =>
Quote
The "Run Spell Animation" and "SFX" codes should give the hand to a generic "Spell Animation" and thus show the numbers every time. However, for both of them, it's not possible to have two different generic "Spell Animations" running at the same time.

I suppose that's works too when you use same multiples "SFX" on same animation so. I just realized that it's the SFX that triggers the damage report.

I'll see if I can find a way to do it without breaking everything, otherwise I'll just use the Effect Point ^^. I think i will use Effect Point instead xD Too sad.

Thanks again Tirlititi.
« Last Edit: 2020-06-07 12:01:23 by DV »

ToraCarol

  • *
  • Posts: 119
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1742 on: 2020-06-08 13:00:28 »
Hello Tirlititi, long time I'm not writing here! I write this little post to ask your help another time.

So, I'm trying to modify the DISC 4 from PSX version and I'm making this thing you suggest time ago about swap Blank Amarant Dialogue Window

So i made something like this

Code: [Select]
    case +1:
        if ( 1 ) {
            SetCharacterData( 8, 0, 255, 5, 7 ) <-- this one I made to not make Beatrix temporary and let the passive ability on
            WindowSync( 0, 128, 175 )
            if ( GetDialogChoice == 0 ) {
                SetPartyReserve( 4095 )
                SetCharacterData( 7, 0, 255, 5, 7 )
                Party( 4, 0 )
                UpdatePartyUI(  )
            } else {
                if ( GetDialogChoice == 1 ) {
                    SetPartyReserve( 4095 )
                    SetCharacterData( 11, 0, 255, 21, 7 ) <-- Blank (I could not remove the temporary flag like Marcus and Cinna because if I remove it turns back in Amarant, Eiko and Quina.. I don't know why)
                    SetName( 11, 74 )
                }
                WindowSync( 0, 128, 176 )
                if ( GetDialogChoice == 0 ) {
                    SetPartyReserve( 4095 )
                    SetCharacterData( 6, 1, 255, 21, 6 )
                    Party( 4, 0 )
                    UpdatePartyUI(  )
                } else {
                    if ( GetDialogChoice == 1 ) {
                        SetPartyReserve( 4095 )
                        SetCharacterData( 10, 1, 255, 21, 0 ) <--Marcus
                        SetName( 10, 73 )
                    }
                    WindowSync( 0, 128, 177 )
                    if ( GetDialogChoice == 0 ) {
                        SetPartyReserve( 4095 )
                        SetCharacterData( 5, 0, 255, 5, 5 )
                        Party( 4, 0 )
                        UpdatePartyUI(  )
                    } else {
                        if ( GetDialogChoice == 1 ) {
                            SetPartyReserve( 4095 )
                            SetCharacterData( 9, 0, 255, 21, 5 ) <--Cinna
                            SetName( 9, 72 )
                            Party( 4, 0 )
                            UpdatePartyUI(  )
                        }
                    }
                }
            }
        } else {
            Party( 0, 0 )
            UpdatePartyUI(  )
        }
        if ( IsInParty(5) ) {
            set Setting_OptionalQuina = 1
        }
        break
    }

But something is wrong and I'm messin with something because is not working right it isn't all in the right place..can I say.
I've seen in the Text is quite different from Steam in fact I had to add the "MULTICHOICE" voice, and so that's what I did.

And then is coming out something like

(“Who?”
µEiko
Marcus)

but I guess i'm still wrong with something..what's it? Thank you as always for the reply!

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1743 on: 2020-06-08 13:20:55 »
I don't get what's your problem, ToraCarol.

Is that something with the text formatting? If yes, then that's the text you use that you should show, not the script.
Usually, you must have a [MULTICHOICE] and [INDENT] opcode at the start of the first line of the multiple choice, then an [INDENT] at the start of each subsequent line, so it would be something like this in the editor:
“Who?”
µµEiko
µMarcus
In-game, µ is not a printable character (in the PSX version), so I guess that what you showed was the text in HW.

The [INDENT] opcode is there to give some space to the hand image and avoid it to be placed over the text.

ToraCarol

  • *
  • Posts: 119
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1744 on: 2020-06-08 14:46:47 »
Oh! Ok! So I did correctly first the step of the TEXT! I solved and change back i was not sure about the [INDENT] opcode but it seems I get right.

Sorry I did not explain right...my fault.

The fact is that I wanted 3 Window that appear one after another to choose which character you want to take with you in the party, and it ends with the "Cinna-Quina Window" that at the end of this last choice it opens the window party based on all your choices.
The problem was that the event does not work correctly. But while I fixed the text and two little things it seems it's finally solved!

So as always, even for a little..thanks for all the help!!


DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1745 on: 2020-06-23 18:58:13 »
Hello everyone, I hope you're well!

I have a small question that does not concern HW but Memoria Scripts (precisely C#, because I'm a beginner in this...)

I'm trying to modify a magic, which basically takes into account the PV difference but i want to use a logarithm function instead.

Here is the test code i am using :

Code: [Select]
double factor = Math.Abs(Math.Round(Math.Log((double)(this._v.Caster.CurrentHp / this._v.Caster.MaximumHp)), 2));
this._v.NormalMagicParams();
this._v.Caster.PenaltyMini();
this._v.Target.PenaltyShellAttack();
this._v.PenaltyCommandDividedAttack();
this._v.CasterCommand.BonusElement();
if (this._v.CanAttackMagic())
{
this._v.TargetCommand.CalcHpDamage();
this._v.TargetCommand.TryAlterMagicStatuses();
this._v.Target.HpDamage = (short)factor;
}

The final formula will be something like this :
Code: [Select]
short hpDamage = (short)Math.Min(9999, this._v.Context.PowerDifference * (int)this._v.Context.EnsureAttack * factor);
However, on my first code, the HpDamage always shows 0.
Trying with/without Math.Round (to have more precision) and Convert.ToInt16 => That's doesn't work.

Can't the game use this kind of complex functions or am I on the wrong way ?

Thanks in advance  :lol:

EDIT : Whatever... i found it. Sorry for this useless post  :-[

Code: [Select]
public void Perform()
{
int factor = (int)Math.Abs(Math.Floor(Math.Log((double)this._v.Caster.CurrentHp / (double)this._v.Caster.MaximumHp)));
this._v.NormalMagicParams();
this._v.Caster.PenaltyMini();
this._v.Target.PenaltyShellAttack();
this._v.PenaltyCommandDividedAttack();
this._v.CasterCommand.BonusElement();
if (this._v.CanAttackMagic())
{
this._v.TargetCommand.CalcHpDamage();
this._v.TargetCommand.TryAlterMagicStatuses();
short hpDamage = (short)Math.Min(9999, this._v.Context.PowerDifference * (int)this._v.Context.EnsureAttack * factor);
this._v.Target.HpDamage = hpDamage;
}
}
« Last Edit: 2020-06-23 23:47:40 by DV »

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1746 on: 2020-06-28 01:23:51 »
Sorry for double post but i have a little question about Spell Animations : is it possible to duplicate an existing animation ?

For example, i want to create a "Slow (Multi)", without changing the existing one (Slow).

I see some unused spell animation but how can we interact with them ?

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1747 on: 2020-06-28 09:07:10 »
Hum... It might be possible with a new feature of Memoria.
Even if it works though, it could only be used for adding new spell animations to abilities of player's characters because you can't pick unused spell animation IDs for enemy attacks with the "Set Spell Animation" code (you can do that when the "SFX" code is used though and I'm not sure of the difference between those two).

If you have the latest version of Memoria (the launcher was updated to show several options from the Memoria.ini so it is easy to see; it looks more like this currently), you can:
0) Pick the ID of one of the unused spell animation... careful because there are many IDs that do not appear in HW and are still used (everything that goes directly after "[Attack-1...]" or "[Weapon-Attack-1...]"; I guess that 379 is really unused though),
1) Modify "Slow" as you wish in HW without worrying of overwriting the existing one,
2) "Save Steam Mod" and export things as "Raw assets" instead of archives,
3) In the created files, search for "Resources/SpecialEffects/efXXX" where XXX is the ID of the Spell Animation you changed (for Slow, it's ef126),
4) Copy that file into a new subfolder inside the game's folder; the path should be something like "Final Fantasy IX/MyMod/SpecialEffects/efXXX" where "MyMod" can be replaced by whatever you want; also rename the file so that the XXX id fits the unused one (379 for instance),
5) In Memoria.ini, add "MyMod" to the list of mod folder names (the field should be something like:
FolderNames = "MyMod"
6) In the .csv files that are generated for your final mod, modify the "Actions.csv" to use your custom spell animation ID instead (in the column "animationId1" or "animationId2").

Hopefully, the efXXX file is the only thing required for such spell animation and it will not bug in-game... but I'm not even sure that will work at all.

DV

  • *
  • Posts: 19
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1748 on: 2020-06-28 21:15:18 »
Thank you again for your quick and detailed response Tirlititi  ;)

I didn't update Memoria yet (i don't want to break something....  :-X) but I'm almost done finishing the CD1 (I'll make a demo I think).

As soon as I finish this first part, I'll do a last run and I'll make some tests with your proposition (because I have a mob that uses a kind of "Slowaga" and I'd like to make the animation cooler ^^)

Need to make both .dll from Moguri (which I am currently using) and Memoria too...  :'(

Tirlititi

  • *
  • Posts: 699
    • View Profile
Re: [PSX/PC] General editor - Hades Workshop (0.41c)
« Reply #1749 on: 2020-06-29 00:23:09 »
Just wait for the Moguri mod to update to the forthcoming Memoria update: compiling everything from your end is rather tedious (plus there are a few bugs).