1
FF9 Tools / Re: [PSX/PC] General editor - Hades Workshop (0.50b)
« on: 2024-01-07 14:42:45 »@paky-outsider: No, they are mostly done for the PC version and even for the PC version that is modded with the Memoria Engine Mod.
These 3 points apply to the PSX version as well, but that's pretty much it.
- Fix "ObjectUID_" in scripts so they adapt if you add or remove entries.
- Add a copy/paste feature for texts. Only enemy, world map and field texts can use this feature.
- Add a couple of interface improvements (mainly some more IDs are displayed).
@g_west: These are handled by the field scripts (in "Environment -> Fields -> Edit Script" windows).
The functions that are relevant to this side-quest are mostly those:
1) Picking up the Red Stone: Field Mountain Path/Trail (1550), Function Zidane_48
2) Picking up the Blue Stone: Field Mountain Path/Trail (1551), Function Zidane_15
3) Picking up the Yellow Stone: Field Mountain Path/Roots (1555), Function Zidane_22
4) Picking up the Green Stone: Field Mountain Path/Roots (1557), Function Zidane_14
5) Placing all the stones: Field Mountain Path/Roots (1554), Function Zidane_16
The picking-up functions all look roughly the same. Something like that:Code: [Select]Function Zidane_48
So you see, by changing the ID "300" to something else, you can change the item given at these statues. It also shows how items are given to the player so you can do something similar later on on disk 3.
TimedTurn( Angle(2000, 850), 32 )
WaitTurn( )
SetStandAnimation( 2605 ) // Crouch
RunAnimation( 2607 ) // Idle crouching
WaitAnimation( )
SetTextVariable( 0, 300 ) // "Red Stone"
WindowSync( 0, 0, 143 ) // "[Item] is set on the stone. Take it out Leave it alone"
if ( !GetDialogChoice ) {
Wait( 10 )
RunSoundCode3( 53248, 1340, 0, -128, 125 ) // Play Sound
Wait( 10 )
}
SetStandAnimation( 200 ) // Idle
RunAnimation( 2591 ) // Stand up
if ( !GetDialogChoice ) {
RunSoundCode3( 53248, 108, 0, -128, 125 ) // Play Sound
AddItem( 300, 1 ) // Add the Red Stone key item
SetTextVariable( 0, 300 ) // "Red Stone"
if ( 1 ) {
WindowSync( 7, 0, 58 ) // " Received [Item]! "
} else {
WindowSync( 7, 0, 59 ) // Unused - " Received [Item] Card! "
}
set VARL_GenBool_2864 = 1
}
WaitAnimation( )
return
The function for placing the stones is a bit more complicated (in particular, it uses a variable "VARL_GenUInt8_358" with bitwise operations to keep track of which stones are already placed). It could be done to add another stone requirement (like a custom made "White Stone" or whatever) that would only be picked up in disk 3, but indeed the easiest is to change the reward in one of the pickup spot above + add the missing stone later on in disk 3.
In order to give the missing stone later on, check how to change a chest content that I wrote a long time ago. Most of the time, you'll want to search for the "Chest" functions in field scripts or possibly the "Zidane_XX" functions when the items are placed on the floor and not inside a chest.
It is also possible to add a whole new chest, so you don't replace any other treasure. For that, you mostly need to:
1) Create a new entry in the "Edit Entries" window, of type "Object" (because it will be linked to a chest 3D object).
2) Add functions for that new entry, at least a "Init" (a function of type 0) and a "Range" (a function of type 2). Adding functions is done by right-clicking on the list of functions in the script window. These two functions should be like the functions for existing chests. The "Init" function for instance could look like that:Code: [Select]Function ChestA_Init
3) Add a line "InitObject" next to the others in the function "Main_Init" to actually create the chest object when entering the field.
SetModel( 75, 0 ) // The model of "ChestA"
CreateObject( [COORDINATES: Chest position on the field] )
TurnInstant( [ANGLE: Chest facing angle on the field] )
SetObjectLogicalSize( 1, 40, 45 )
SetStandAnimation( 7340 ) // Dummy Close
SetWalkAnimation( 7340 ) // Dummy Close
SetRunAnimation( 7340 ) // Dummy Close
SetObjectFlags( 5 )
SetHeadFocusMask( 2, 0 )
if ( [CONDITION: Chest content already picked up] ) {
SetStandAnimation( 7338 ) // Dummy Open
} else {
SetStandAnimation( 7339 ) // Dummy Close
}
SetObjectFlags( 49 )
EnableHeadFocus( 0 )
return
Sorry for the late answers.
Hi Tirlititi and happy new year to everyone who still enjoying this game.
I'm on my way to mod 3rd disk of psx version.
I've to stop and re-mod the entire disk 2 fields, 'cause i overwrite the binary file directly, 'cause of some issues in Iifa Tree fields that stuck the game. Many of these fields, even if you don't modify anythings, if you parse them, appears some errors.
So i don't touch them (except two or three things). It works.
Something like that it happens on disk 3, pandemonium fields, because of my modification, i suppose.
In 3rd disk i'd wanted to add Beatrix in the party...the idea is switch Freya to Beatrix (simply adjustment of SetPartyReserve and SetCharacterData) but in many places there are some troubles: Desert Palace, Oeilivert, Gulgu, Ipsen Castle and so on till to Branbal. The code of the game, often checks who is in your party (is in party check, or with other VARiables) to put in game fields this o that character. Even if from Quina, Eiko and Amarant to Cinna, Marcus and Blank, I made it, It doesn't work if you adjust these checks to say to the game "if Beatrix is in the party you've to act like Freya is in the party".
Now, 'cause of Pandemonium fields problems, i rewrited fields only to have Tantalus... I added Beatrix in some battles (like when you search amarant in Ipsen Castle with Zidane solo party).
1) Any suggestions?
2) Where (or with what) i can edit something about trance models on psx version?
I've already gave trance to Cinna, Marcus and Blank removing Change Model line in Spell animation for Trance Activate --- but, you know, i'm wondering, for example, can i associate blank with pluto suit like trance version of Blank?
And on it, how can i choose (or set) this suit for Blank, in normal game?
It's almost a year that i've started to mod the game thank to this forum, to you Tirlititi and to who posts here throught the years.
Thanks.