Author Topic: [FF9] General editor - Hades Workshop (0.38)  (Read 151528 times)

Lenthyan

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #675 on: 2017-02-23 00:56:42 »
Hey Tirlititi, would it be a lot harder to just remove the stat growth from equipment stat bonuses?

This is a great tool, thanks for the hard work!  :)

Go to CIL Code, then search for "ff9level" in the list on the left, then "FF9Level_GetDex", then Edit Code.
Spot the following lines near the bottom of the code and remove them:
Code: [Select]
ldarg.1
ldc.i4.s 10
div
add
ldloc.2
ldfld 0x4000885 // FF9LEVEL_BONUS::dex
ldc.i4.5
shr
add

Then do the same for the "FF9Level_GetStr", "GetMgc" and "GetWpr". The codes are pretty similar and you always have to delete the lines between that "ldarg.1" and the second "add" below it.

With that, characters will keep their default stats whatever their level. Their max HP/MP still increase a bit ; see the "Party" -> "Stats" panel for that.

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #676 on: 2017-02-25 12:25:40 »
Hi Lenthyan, sorry for the late reply.
It's not harder to only remove the stat growth from the stat equipment boost. You only need to delete fewer lines.
Only delete these ones:

Code: [Select]
ldloc.2
ldfld 0x4000885 // FF9LEVEL_BONUS::dex
ldc.i4.5
shr
add

Lenthyan

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #677 on: 2017-02-25 21:29:11 »
Awesome, thank you very much!

Pesmerga

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #678 on: 2017-02-26 23:41:44 »
hello  Tirlititi,  can you confirm this if its a bug or not because when i try to replace roulette then make a new spell, set target type on
enemy (single) only, then i save my mod, patched into my iso then play on emulator when i play game then using quina abilities (the one i replace the roulette) sometimes is quina is facing on my party then using the skill in my party . i think there is a  bug in there.


quina abilities
goblin punch
lvl5 death
lvl4 holy
lvl3 defless
doom
roulette ---------- this one i was talking about whatever i do, same result quina is using abilities to my party, i set target type enemy (single only).

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #679 on: 2017-02-27 08:49:18 »
It's not really a bug, but yes, it's normal. Roulette, like a few other spells, is specially handled by the battle engine.

Roulette's target is randomly chosen among the fighters (50% for an enemy, 50% for a player character),
Amarant's Curse element is randomly chosen among all the elements,
Amarant's Spare Change reduces the gil of the party (the damage calculation doesn't depend on the spell slot),
Meteor has a special random check that can make it use its second spell animation instead of the 1st one,
Comet has a special random check for a miss,
The spells under the commands "Summon" (x2) and "Eidolon" can randomly get flagged "short_summon" that reduces the damage and swap the spell animation,
The spells under "Swd Mag" verify Vivi's availability,
etc... there are a few other minors things like that.

The best way to bypass that is to use another spell slot (one of the "None" spells) instead of changing the spells like Roulette or Meteor (unless you want to keep that special treatment).
Also, most of the time, that treatment happens only if the spell is in its original command (if you make Roulette a command of Black Magic, it won't be random anymore).

Pesmerga

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #680 on: 2017-02-27 20:22:08 »
Thanks for advice, btw this tool is awesome  :)

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #681 on: 2017-03-01 22:46:29 »
Thanks :)

Update to v0.37:
- Added a tool, the "Unity Assets Viewer". It allows to open the asset files of the Steam version and export them - not import yet -. It is a stand-alone tool in the sense that you don't need to open the game with the main frame for it (actually, it will recommended not to open both the assets and the game's datas of the same game at the same time),
- Fixed a few bugs, the field backgrounds should work fine with the PSX version now, and I added a few of the things asked (the background converter now starts with .tmp files, you can choose to export the backgrounds with their internal ordering...).

As said, the assets viewer can't import files yet, but that won't take long. What makes it stand out as an Asset Viewer is that it goes fetch the real name and hierarchy of the files, making them more easy to identify. It also gives a few additional informations about some files for the same purpose. Also, it can automatically convert the images extracted to a standard format (.png, .tga, .tiff or .bmp).

The files are exported in the folder "HadesWorkshopAssets" from the game's root directory. They'll likely be re-imported from there as well.

With this, it will not only be easy to complete the lists of IDs I wrote about, but also to use one's custom assets and import them in the game.
See the kind of things you can find in the "sharedassets2" file for instance :D

Isn't that neat?

For now, only images are auto-converted. In the future, it would be great to have a converter for the sounds/musics and the 3D models ^^
If anyone volunteers !

EDIT: There seems to be a few bugs with the last patch of the Steam version. I haven't look at it yet but make Steam mods with cautious (.hws files are independant so they're a safe way to save mods anyway).
« Last Edit: 2017-03-01 22:50:15 by Tirlititi »

Fraggoso

  • Crazy poster
  • *
  • Posts: 211
  • Karma: 9
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.36b)
« Reply #682 on: 2017-03-02 07:39:45 »
Wow, those are big changes for the mod community!
Nice tirlititit! :D

Edit:
Okay, so we basically can also start on upscaling the textures now! :D
Do you know how the textures are compressed? With mipmaps, without (or does the engine generate them on the fly?)?
Or are they really stored as png's for example?
« Last Edit: 2017-03-02 08:13:04 by Fraggoso »

Shinryu

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #683 on: 2017-03-07 01:55:08 »
Hello, I'm new by there and I just discovered some great mods (fullscreen, alternate difficulty..) and your editor for the great FF9 ! :D
Thank you all for your hard work ;) I also wanted to try and create some mod for this lovely game but I am unfortunately not that skilled by now..
Well, I just want to create some simple (I guess) mod actually. Well, I have some nice idea that could be great if it's was possible to bring them to the game.. 

So, firstly, it's about the exclamation mark and card icon when you approach an NPC.. I know that this stuff, the card icon specially, is coming from the mobile version of the game for gameplay convenience. And in the end it's also help those who want to play with the keyboard and mouse but when you want to play the game with the gamepad only it's become more useless.. so I was thinking to add some option for makes it to appear or to disappear depending on how you want to play or if you need it. In another hand, I'm aware that thanks to that we can now clearly see if a NPC wants to play card as there is no card icon for other NPC. But it could also help those who want to play the game in the old fashion way by spamming the square button :D So an option for this icon would be nice I think. 

Or at least, I wanted to reduce those icons.. the fact is that in some small area with a lot of NPC, the screen is full with lot of those icons popping up when you walk past someone.. xD
So a way to reduce them with the option to make the card icon to disappear or not would be a perfect addition for the game.

Finally, a nice idea that can help those who want to get the Excalibur 2 weapon while speedrunning the game without leaving any items behind on the way there.. anyone knows that when you come closer of any interactive stuff (chest, hidden item, for climbing up..) each time there is an exclamation mark that appears. Also, anyone knows about the (pretty useless ?) hand that appears pointing to your character when you are standing there for a while.. So my idea would be to makes some or all of the exclamation mark to appear when you are standing there (like for the pointing hand) showing you all the hidden items around you. That way you can clearly see all the items that you can grab without wondering if you missed any in a house or elsewhere.. ;) Of course it's could be a waste of time by standing there waiting for the items to appear so we could either make an option to always make them visible or even better just tweaking the standing time needed to showing up the exclamation mark so that way the icons don't always fill up the screen and we would lost less time for grabbing items. In the game, there is already the option for activate or deactivate the pointing hand so we just have to mod this option by allowing hidden items to appear that way the hand option become more usefull too :D

Well, don't know how hard it could be and if it's even really possible doing that but would be great if someone can give me some thought about which of my ideas is possible to realise or how to better use the Hades Worshop if it's could help for that.. I already tried searching in the CIL Code and other function but no dice for now.

Also, I have checked some of the pages but not all of them so I don't know if someone else have already proposed same ideas as me so sorry about that if it's was already asking.

Hoping for some answer ;)
Thank you ! :D
« Last Edit: 2017-03-07 01:58:17 by Shinryu »

Pesmerga

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #684 on: 2017-03-07 02:51:02 »
@Shinryu actually u can easily remove the time limit in getting the  excalibur 2 using this tool so u dont need to rush your game. ;)  go to
environment---->fields-->memoria gate to space and edit script:


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

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

and this one

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

remove this line : && ( GetTime <= 43200L ) ) {

« Last Edit: 2017-03-08 13:54:41 by Pesmerga »

Fraggoso

  • Crazy poster
  • *
  • Posts: 211
  • Karma: 9
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #685 on: 2017-03-07 21:16:59 »
As soon as tirlititi finish the import on the texture the exclamation bubbles as well as the card bubbles can be replaced by a dummy texture without any data in it. 

Shinryu

  • Newbie
  • *
  • Posts: 2
  • Karma: 0
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #686 on: 2017-03-08 03:58:28 »
Hello, well as I thought my request was more a daydreaming I guess.. xD
Will also check some other workaround but I am waiting for the work of tirlititi if it's could make the trick for that part :D

>Pesmerga Thank you but there is really more simple method for doing this and I have already changed the timer on my PS1 version for this weapon in my long play.. now I wanted to play on the steam version with some mod like I had imagined for fun or challenge.. not just changing the timer for excalibur 2 ^^ but I will remember that kind of modification in the script to see if I can use it for other stuff in another way :D

Well, thank you all ;)
Hope some news soon !

Meru

  • Crazy poster
  • *
  • Posts: 105
  • Karma: 6
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #687 on: 2017-03-08 08:39:47 »
Removing textures by replacing them with dummies is a bad approach.
Hiding card icon this way is probably possible, but that will still leave the exclamation mark in a displaced state.

And hiding exclamation mark may remove it even in places you don't want.

As for hand icon, that one can be disabled in settings.

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #688 on: 2017-03-08 09:23:55 »
Yes, replacing the bubbles with empty textures would not be a very satisfying solution.

Both your questions are best done with engine modification. I guess you can remove the bubbles with HW, modifying the CIL code but I don't know which methods take care of them ; I'll check this evening if I can find something.
Showing the treasures is way more tricky. There are two kinds of treasures: those placed in a chest (linked to a 3D model) and those on the floor (not linked to a 3D model) and I don't know if it's reasonably feasible to show the position of the second kind.
Albeoris's Memoria is more suited for that kind of stuff (it can already spot the objects linked to a 3D model and wrap a box around them).
« Last Edit: 2017-03-08 09:26:36 by Tirlititi »

Fraggoso

  • Crazy poster
  • *
  • Posts: 211
  • Karma: 9
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #689 on: 2017-03-08 09:34:00 »
Why the heck the exclamation bubble got shifted?
Well I don't mind the both bubbles to be honest, but as long as there maybe a solution on the horizon that's always welcome.

Meru

  • Crazy poster
  • *
  • Posts: 105
  • Karma: 6
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #690 on: 2017-03-08 09:37:42 »
Why the heck the exclamation bubble got shifted?
Well I don't mind the both bubbles to be honest, but as long as there maybe a solution on the horizon that's always welcome.
Icons are centered on a character. Be it one or two. So making one invisible does not remove the shift. One must hack the engine to take care of that =(

Fraggoso

  • Crazy poster
  • *
  • Posts: 211
  • Karma: 9
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #691 on: 2017-03-08 09:39:46 »
So not even a full alphasmasked texture wouldn't work? :/
What a bummer. ^^

Meru

  • Crazy poster
  • *
  • Posts: 105
  • Karma: 6
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #692 on: 2017-03-08 09:41:32 »
Well it would look exactly as my screenshot, that's not a photoshop (except the red question mark), I tried it before posting  :mrgreen:

Fraggoso

  • Crazy poster
  • *
  • Posts: 211
  • Karma: 9
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #693 on: 2017-03-08 09:43:52 »
Thanks for the info Maru. :)

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #694 on: 2017-03-08 18:13:38 »
Ok, those bubbles (exclamation and card) are handled by the class "EIcon".
The easiest way to disable the card bubble is to replace a "2" by a "1" in the method "EIcon::PollCollisionIcon".

Code: [Select]
ldc.i4.2 // Replace this 2 by a 1
call 0x600091F // EIcon::PollFIcon
ldc.i4.1
stloc.0
That's near the middle of the method.

In order to remove both bubbles (for NPC only, treasures still have their own bubble), I think you can remove those four lines + the four lines that are a bit below them:
Code: [Select]
ldc.i4.1
call 0x600091F // EIcon::PollFIcon
ldc.i4.1
stloc.0

There are also bubbles in the World Map (Chocobo, airships and beach bubbles). For disabling all of them, the best is to "return false" at the start of the method. The two first lines can be changed into these:
Code: [Select]
ldc.i4.0
ret

dclem

  • Crazy poster
  • *
  • Posts: 174
  • Karma: 10
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37)
« Reply #695 on: 2017-03-09 02:10:18 »
Its Sharon DaSilva from Steam.
http://steamcommunity.com/app/377840/discussions/0/353915953249510749/?ctp=20

I actually just tried the "EnableMove()" command (placed right underneath the Random battle command) and Garnet was still locked up.
The random battle command can go anywhere in the MainInit section, right?

Okay, here's what I got in A.Castle/Hallway MainInit:
Now you can see what's missing.

Code: [Select]
Function Main_Init
    set VAR_GlobBool_159 = 0
    set VAR_GlobUInt8_17 = 255
    set VAR_GenBool_191 = 0
    if ( VAR_GenBool_184 == 1 ) {
        set General_FieldEntrance = 10000
    }
    set VAR_GenBool_184 = 0
    set VAR_GenInt16_9 = 65535
    if ( VAR_GenUInt8_13 == 9 ) {
    } else {
        if ( ( VAR_GenUInt8_13 == 2 ) && ( VAR_GenInt16_9 < 0 ) ) {
            set VAR_GenUInt8_13 = 9
        } else {
            if ( VAR_GenInt16_9 < 0 ) {
                set VAR_GenUInt8_13 = 0
            } else {
                set VAR_GenUInt8_13 = 1
            }
        }
    }
    set VAR_GenInt16_11 = 65535
    if ( VAR_GenUInt8_14 == 9 ) {
    } else {
        if ( ( VAR_GenUInt8_14 == 2 ) && ( VAR_GenInt16_11 < 0 ) ) {
            set VAR_GenUInt8_14 = 9
        } else {
            if ( VAR_GenInt16_11 < 0 ) {
                set VAR_GenUInt8_14 = 0
            } else {
                set VAR_GenUInt8_14 = 1
            }
        }
    }
    SetControlDirection( -10, 0 )
    SetRandomBattleFrequency( 150 )
    SetRandomBattles( 1, 915, 915, 915, 915 )
    InitCode( 1, 0 )
    InitCode( 2, 0 )
    SetDialogProgression( 0 )
    if ( General_ScenarioCounter < 8500 ) {
        if ( General_ScenarioCounter <= 7060 ) {
            set VAR_GlobInt16_30 = 308
        }
        if ( General_ScenarioCounter >= 7100 ) {
            set VAR_GlobInt16_30 = 5
        }
        if ( General_ScenarioCounter >= 8000 ) {
            set VAR_GlobInt16_30 = 305
        }
        if ( General_ScenarioCounter >= 8200 ) {
            set VAR_GlobInt16_30 = 306
        }
        switchex 4 ( VAR_GlobInt16_30 ) {
        case 308:
            set VAR_GlobUInt8_24 = 1
            InitObject( 14, 0 )
            InitObject( 31, 0 )
            InitObject( 13, 0 )
            MoveCamera( 166, 190, 1, 8 )
            break
        case 5:
            set VAR_GlobUInt8_24 = 0
            InitObject( 25, 0 )
            InitRegion( 17, 0 )
            InitRegion( 18, 0 )
            InitRegion( 19, 0 )
            InitCode( 24, 0 )
            break
        case 305:
            set VAR_GlobUInt8_24 = 10
            InitObject( 27, 0 )
            InitObject( 33, 0 )
            InitObject( 28, 0 )
            InitObject( 4, 0 )
            InitObject( 5, 0 )
            InitObject( 6, 0 )
            InitObject( 7, 0 )
            InitObject( 8, 0 )
            InitObject( 9, 0 )
            InitObject( 10, 0 )
            InitObject( 11, 0 )
            MoveCamera( 180, 180, 1, 8 )
            ShowTile( 14, 0 )
            ShowTile( 24, 0 )
            break
        case 306:
            set VAR_GlobUInt8_24 = 24
            InitObject( 27, 0 )
            ShowTile( 14, 0 )
            ShowTile( 24, 0 )
            InitRegion( 22, 0 )
            InitRegion( 23, 0 )
            InitRegion( 21, 0 )
            InitCode( 24, 0 )
            SetFieldCamera( 1 )
            SetControlDirection( -6, 0 )
            RunSPSCode( 0, 130, -1, 0, 0 )
            RunSPSCode( 1, 130, -1, 0, 0 )
            RunSPSCode( 2, 130, -1, 0, 0 )
            RunSPSCode( 3, 130, -1, 0, 0 )
            RunSPSCode( 4, 130, -1, 0, 0 )
            RunSPSCode( 5, 130, -1, 0, 0 )
            RunSPSCode( 6, 130, -1, 0, 0 )
            RunSPSCode( 7, 130, -1, 0, 0 )
            RunSoundCode( 1792, 124 )
            while ( SyncSounds != 0 ) {
                Wait( 1 )
            }
            RunSoundCode1( 16903, 124, 31 )
            RunSoundCode1( 16897, 124, 0 )
            set VAR_GenUInt8_8 = 25
            RunSoundCode2( 34305, 0, 180, VAR_GenUInt8_8 )
            set VAR_GlobBool_167 = 0
            break
        }
    } else {
        if ( General_ScenarioCounter < 8600 ) {
            set VAR_GlobUInt8_24 = 100
            set General_FieldEntrance = 309
            InitObject( 25, 0 )
            InitObject( 15, 0 )
            InitObject( 26, 0 )
            InitObject( 29, 0 )
            InitObject( 32, 0 )
            InitObject( 16, 0 )
            MoveCamera( 320, 224, 1, 8 )
            RunSoundCode( 0, 98 )
            while ( SyncSounds != 0 ) {
                Wait( 1 )
            }
            set VAR_GenUInt8_8 = 125
            RunSoundCode1( 16897, 98, VAR_GenUInt8_8 )
            set VAR_GlobBool_167 = 0
        } else {
            set VAR_GlobUInt8_24 = 0
            InitObject( 25, 0 )
            RunSoundCode( 0, 98 )
            while ( SyncSounds != 0 ) {
                Wait( 1 )
            }
            set VAR_GenUInt8_8 = 125
            RunSoundCode1( 16897, 98, VAR_GenUInt8_8 )
            set VAR_GlobBool_167 = 0
        }
        InitRegion( 20, 0 )
        InitRegion( 18, 0 )
        InitRegion( 19, 0 )
        InitCode( 24, 0 )
    }
    if ( General_ScenarioCounter >= 8000 ) {
        ShowTile( 14, 0 )
        ShowTile( 24, 0 )
    }
    if ( VAR_GlobBool_158 == 0 ) {
        0x27( 127 )
    } else {
        0x27( 255 )
    }
    Wait( 2 )
    Wait( 2 )
    if ( VAR_GenUInt8_13 == 9 ) {
        SetTextVariable( 2, 0 )
        WindowAsync( 6, 0, 56 )
        RaiseWindows(  )
        WaitWindow( 6 )
        set VAR_GenUInt8_13 = 0
    }
    if ( VAR_GenUInt8_14 == 9 ) {
        SetTextVariable( 2, 1 )
        WindowAsync( 6, 0, 56 )
        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(  )
                }
            }
        }
    }
    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
[/CODE}

dclem

  • Crazy poster
  • *
  • Posts: 174
  • Karma: 10
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37b)
« Reply #696 on: 2017-03-20 10:06:23 »
what is the script command to change which music plays during a battle? I've searched endlessly, and can't find a code.

dclem

  • Crazy poster
  • *
  • Posts: 174
  • Karma: 10
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37b)
« Reply #697 on: 2017-03-21 21:47:46 »
Now if someone else asks a question, you'll hope right on it.

Tirlititi

  • Insane poster
  • *
  • Posts: 416
  • Karma: 51
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37b)
« Reply #698 on: 2017-03-21 22:10:14 »
I already answered that music question, the first time you asked me.

dclem

  • Crazy poster
  • *
  • Posts: 174
  • Karma: 10
    • View Profile
Re: [FF9] General editor - Hades Workshop (0.37b)
« Reply #699 on: 2017-03-22 14:13:01 »
no...?
that was about adding a timer and random battles to Alexandria disc 3- after Beatrix and Steiner montage fights.
I don't remember asking about music until now.