Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Tirlititi

Pages: 1 [2] 3 4 5 6 7 ... 35
26
Hello,
I think that all the achievements can be obtained in Alternate Fantasy. Pillar of support only counts for the number of supporting abilities you've learned, so it doesn't matter if some abilities are replaced or are removed as long as there are at least 63 supporting abilities to learn in total.

27
Update to v0.50b:
- Fix shops having trailing hammers to sell in some situations.
- Fix "ObjectUID_" in scripts so they adapt if you add or remove entrie.
- Add a copy/paste feature for texts. Only enemy, world map and field texts can use this feature.
- Text files (.mes) are not generated anymore if they are empty.
- item icon colors are not limited to just 15 anymore, but the color 15 should still be used solely for the "disabled" icon of the kind.
- Add a couple of interface improvements (mainly some more IDs are displayed).
- Add a couple of functions that can be used in scripts with Memoria.

The new available script functions will only work in-game when using the latest commit of Memoria. So that's something going on together with Memoria updates. For now, the new functionalities are these:
- "SetCharacterEquipment / GetCharacterEquipment" => control over individual pieces of equipements within scripts, so you are not restricted by "initial equipement sets" anymore.
- "SetCharacterLevel / SetCharacterExp / GetCharacterLevel / GetCharacterExp / GetLevelExperience" => control over character experience and levels.
- "AddShopItem / AddShopSynthesis / IsItemInShop / IsSynthesisInShop" => dynamically add or remove items that are sold by specific shops. I was thinking of a kind of synthesis recipe system in which you can find key items that unlock new items/synthesis to be bought.
- "WalkEx / TurnTowardObjectEx / SetLogicalAnimationEx" => more flexible control for cutscenes. Using these should make it easier as more cutscene code can be written in a single function and not splitted apart.
- "CardWinCount / CardLossCount / CardDrawCount / GetCardPoints / GetCardRank / GetTreasureHunterPoints" => access some mini-game points in scripts.
- "ConvertRegularItemId" / etc... => some utility functions required because of the fact you can add items over the 256 limitation.
- "GetPartyMember" => know which characters are in the party, a bit different from the existing "IsInParty".
- "GetItemFullCount" => the number of items of a specific type taking the equipped ones into account as well.
- "IsAbilityLearnt / IsSupportEnabled" => know more about what the party members can do combat-wise.


EDIT: I made a short video showing some of these script possibilities in action.
Link to video
Link to the corresponding script code

EEDIT: I made another small update (still calling it v0.50b) to fix a crash that happened sometimes when selecting negative numbers in the script editor.

28
That is strange. I guess you're saying that the following menu looks correct on your end, with "Alternate Fantasy" ticked and all.


I don't really know what could be wrong if you have reached that point already. The only thing would be that you have an other incompatible mod changing the items as well. What are your activated mods?

29
I randomly found another one:
https://i.imgur.com/zhTaKo8.mp4

In vanilla (and PSX), there's no light effect on the statue and only the wings glow. Actually, in PSX (and surely Steam vanilla), there's a couple of glowing pixels on the statue's edge but the glow is behind the statue so it's almost completly hidden.

The Moguri Mod completly erases the glowing effect on the statue, even when it's put back on the foreground. Surely that's because of those edge remnants that were mistaken as annoyances.

It can be easily fixed by adjusting the layer's depth. Rather than scripting that depth adjustment, I find it better to adjust it in HW's background manager, now that it's a possibility.

30
Update to v0.50
-------------------


- Added compatibility with many of Memoria's features when it is installed:
-- You can create new spells, supporting abilities, commands, playable characters, sword magic sets, (key) items, (synthesis) shops, with custom IDs. Many limitations are also removed, like the number of abilities taught by items, the recipe ingredient count for synthesised items, etc...
-- Many numerical values or IDs are not capped anymore. This doesn't apply to the datas for enemies as they still use the native binary format, even when modding with Memoria. To bypass these limits, you need to manually use Memoria's BattlePatch.txt feature.
-- You can attach weapon / armor / usable effects to any item, so weapons and jewels can increase defensive stats and exotic items can have multiple usages.
-- HW provides an interface to multiple recent Memoria features (boosted supporting abilities, custom textures for weapons...).
-- When adding custom playable characters, you can setup various datas that are required for them to be full-fledged characters. That includes the set of battle animations that they use. However, this isn't magic: you still need to create animations for them as they will have a limited set of animations available from the base game anyway. On top of that, Memoria doesn't like it if you use the same battle animation for two different logical animations (eg. if you use the same animation for "stand" and "stand weak"). The solution for now is to duplicate these animations (using eg. the Unity Assets Viewer) and just give another name to the duplicate. Eventually, Memoria will do that automatically I guess. Also, you'll most likely need to use Memoria's Model Viewer to see at least the skeleton and know which bone ID corresponds to which part of the model.
-- The CSV generated entries are now compared with Memoria's default database and only the new entries and the modified entries are kept. For example, if you only change Thunder Slash's effect, the corresponding CSV will only contain Thunder Slash's entry. This improves mod compatibility and can also help for writing down a description of your mod (keeping track of what you've modified more easily). The same goes for the .mes files (which contain entry names and descriptions).
-- Added a feature for completing the scripting system with custom functions. That's not really something you can use for now but it will be used in the future when Memoria accept new functions to be used in scripts (like, for example, a function "SetCharacterLevel" or "GetTetraMasterRank" to be used in cutscenes). It will allow me to implement support for these functions without having to update the tool each time.

- The list of equipments that each character can equip can now be modified both in the "Inventory -> Items" panel and in the "Party -> Stats" panel. This makes it easier depending on whether you want to think of equipment availability as a per character or per item feature. The equipment availability of custom characters may only be changed in the "Party -> Stats" panel.

- Fixed a couple of errors when de-compiling scripts (AI scripts, field and world map scripts): in some situations, a "break" keyword was added outside of any breakable block. It made it impossible to recompile directly the concerned functions. Sometimes, that "break" was only an extra line that should have just been removed, but sometimes it was a symptom of a more problematic error in the de-compilation of switch(ex) blocks. Now, a commented "// JMP(0)" line is written as placeholders for these exotic situations. Example of functions that were concerned are:
-- "Blue_Narciss_Loop" in World Map scripts, and similar functions for the other transport vehicles,
-- A couple of functions in Scarlet Hair's script (also in a fight against Zorn & Thorn if I recall correctly),
-- A couple of model "Init" functions in fields that just had an extra "break" line where it shouldn't.

- Reworked the way that argument expressions (and "set" expressions) are parsed: they now take operation priority into account so you less need to add parentheses everywhere to force the priority. For example, the expression "set x = 3 * 2 + 5" now parses as "set x = ((3 * 2) + 5)" instead of "set x = (3 * (2 + 5))".

- Fixed a bad practice in my C++ coding that lead the executable's size (and the compilation time!) to be much bigger than it should have (approx. x4).

- Improved a bit (or at least tried) the interface for a couple of panels. The IDs of entries are shown directly when selecting them, which makes things easier in specific situations in which a number corresponds to an ID (eg. for the effect of the Blue Magic "Angel's Snack" in which the spell's power corresponds to the ID of the item used).

- Added a bit of readability for the World Map functions that trigger on specific areas: the region concerned is now shown on the minimap. Also, the keyword "forward" is now used in these scripts instead of having an empty function. It means "use the same code as the one in the next function" and it can only be used if it's the only line of the function.

- Fixed batch script importing not working correctly depending on the Unicode encoding of the .txt.

- Various small bug and typo fixes.


For the first time ever, I could successfully batch export all the field scripts of the game and batch import (and thus compile) them back with no problem. I did that with multiple steps because it gets very slow and very long if you batch-import just one huge file containing all the scripts of the game, but it worked flawlessly. Until now, there was always a couple of rare functions that had a de-compilation problem and required manual fixes.

On the downside, I do not guarantee the Randomizer embedded tool to work correctly if you have more spells than the base 192 spell slots or things like that.

Most of "Creating new spell / command / etc" features are accessible only with a right-click: don't hesitate to try right-clicking on lists to see if you can add or remove entries.
When adding new supporting abilities, you need to manually create an effect for them in AbilityFeatures.txt: that part cannot be done inside Hades Workshop.

EDIT: Updated with a hotfix to remove the error message when "ScriptAPI.txt" doesn't exist.

31
Hi. I wished I have this kind of almighty power ^^'
No, it is not possible to increase the data size of the PSX version to my knowledge, so inserting the heavy FMVs of the PC version in the PSX disc image is out of reach, even before considering format discrepancies.

If you want to do the other way around, it might be possible with other tools. You should be able to extract FMVs from the disc image using generic PSX ISO tools (something like that). And then surely video editing tools should be able to change the format of whatever you extracted from PSX into an OGG video, which can then replace the OGG videos used for the PC version (the audio tracks of FMVs are not as easily accessible on PC but are archived in p0data62.bin; more infos there).

32
Hi.

It's not easy to add a brand new NPC even with minimal interaction, but it is possible to add Beatrix in the party, even in the PSX version. Indeed it's impossible to have both Blank and Amarant simultaneously because they share a common slot. It'd also be problematic to switch between Blank and Amarant back and forth because it would lose some of Amarant's datas in the process.
Basically, you need to add this kind of function to a NPC in a field script. You can add a NPC that normally doesn't appear by adding an entry, but beware that 3D models are field-dependant on the PSX version and you can't have a NPC appearing in a field in which they would never appear otherwise.
Code: [Select]
Function Man_SpeakBTN
    ifnot ( IsMovementEnabled ) {
        return
    }
    set VAR_GlobBool_158 = 0
    if ( VAR_GlobBool_159 == 1 ) {
        DisableMove(  )
        if ( VAR_GlobBool_144 == 0 ) {
            DisableMenu(  )
        } else {
            Wait( 1 )
        }
    }
    SetTriangleFlagMask( 127 )
    WindowSync( 2, 128, XXX ) // Use whatever dialog line you want, like "Hello, here's a Beatrix for your party."
    set Setting_PartyReserve = 511 // 511 is "all the usual party members + Beatrix
    Party( 4, 1 ) // Open the party menu to allow the player to place Beatrix in
    set VAR_GlobBool_158 = 1
    if ( VAR_GlobBool_159 == 1 ) {
        if ( VAR_GlobBool_156 == 0 ) {
            EnableMove(  )
            SetTriangleFlagMask( 255 )
            if ( VAR_GlobBool_144 == 0 ) {
                EnableMenu(  )
            }
        }
    }
    return
You can add things like "TurnTowardObject( 250, 32 ) / WaitTurn(  )" to make add fanciness, but the main line is changing the "Setting_PartyReserve". Also, if you use this code before Beatrix joined your party the first time, you need a line like "SetCharacterData( 8, 1, 13, 22, 15 )" as well.

By the way, whether it's Blank or Amarant in your party depends on the flag "temporary character" in the corresponding "SetCharacterData" line that was last used on their shared slot.
Code: [Select]
SetCharacterData( 11, 1, 10, 21, 12 ) // Setup Blank
SetCharacterData( 7, 0, 7, 5, 7 ) // Setup Amarant instead

33
@Aelux: Most likely, you have the latest version of the mod Alternate Fantasy, but you don't have the latest release of Memoria. Make sure to download the latest version, which is the one introducing Triple Triad and battle interface changes.
Because I am not well organised, I forgot to update one of the links of the opening post. The direct download link didn't lead to the latest version of Memoria (I fixed it now).

@shwamuel: Yes, it can be seen in this spreadsheet:
https://docs.google.com/spreadsheets/d/1hMYV5Kd1q623U-wVXrW1lKL5h0FDbHXE
In the Quina tab, you'll find both the list of Blue Magics and the enemies that teach them in the mod.

34
I didn't update the source file for v6.2 yet, so it's the v6.1 that can be found in this my dropbox folder.

35
Hi,

If the questions are easy and take me 5 minutes to answer, that's fine. If you happen to ask more complicated questions, I'll delay my answer to take more time writing it. Don't worry about it ;)

It is indeed outdated information. The Moguri mod was made using Hades Workshop amongst other tools. From my point of view, it's way easier to mod a PC game instead of the emulated version, for many reasons. I guess it can be more disturbing for you but the latest versions of Hades Workshop / Memoria make it very easy to create and apply the mods (it's even easier to do it if you have Memoria installed than modding the base game).
You'll find your marks in any case.

However, the modding of spell animations is limited and what you're asking for is not currently possible (and it won't be in a foreseeable future).

36
@g_west: No, it's only that it's easier to copy/paste a lot of different texts in a .txt file (especially if you have a good text editor) rather than copy/pasting them in Hades Workshop.

@stir472: Hello. No, there are 99 levels and that cannot be changed, at least yet.

37
Expect 100%. It's not impossible that there are situations in which the conversion would be easier, but don't count on it.
You can however use Text Batching (export/import) that eases the process for the Text panel.

38
The frog rewards are in the functions "Main_Loop" of the relevant marsh fields. It's a long function that handles many things, so try to search for the lines:
Code: [Select]
if ( GetFrogAmount == 99 ) {or
Code: [Select]
Battle( 1, 330 )or
Code: [Select]
switchex 6 ( GetFrogAmount ) {
case 2:
set VAR_GlobUInt16_66 = 254
break
case 5:
set VAR_GlobUInt16_66 = 238
break
case 9:
set VAR_GlobUInt16_66 = 169
break
case 15:
set VAR_GlobUInt16_66 = 239
break
case 23:
set VAR_GlobUInt16_66 = 82
break
case 33:
set VAR_GlobUInt16_66 = 83
break
default:
set VAR_GlobUInt16_66 = 197
break
}
(all of these are close to each other)

The rewards are setup in this last "switchex" block: these numbers are item IDs. So for instance, the reward after 2 frogs is the item 254 (Ore), the reward after 5 frogs is 238 (Ether) etc...
If you want to add rewards at other steps, you'll also need to add these steps in the different "Frog_XXX_SpeakBTN" functions; there's the list of rewarding steps near the end of these functions in another "switchex" block.

You should have no problem importing your .hws from the PSX version to the Steam version, except for texts. I never did a proper "PSX text format -> PC text format" converter so it will most likely bug if you let the "including texts" boxes ticked when importing your .hws in the Steam version.

39
I have never seen that problem. It's been a long time since I used the tool on the PSX version of the game. I don't know why it bugs.

- The "Normal" battles are those you can find in discs 1, 2 and 3 in places without mist (eg. Outer Continent or after Soulcage is defeated)
- The "Mist" battles are those you can find in discs 1, 2 and 3 where there is mist (ie. Mist Continent in discs 1 and 2)
- The "Alternate with Mist" battles are those you can find in disc 4 (it only exists for the 100 first spots; for the other spots, the "Mist" battles are used instead)
- The "Alternate" battles are not used since it would correspond to the disc 4 world map battles in places without mist.

40
I don't remember how much you can change the battle scenes when modding the PSX version of the game.

In any case, you can pick different battle scenes for each battle in the "Enemy" panel (not in the "World Maps" panel). Surely, you can pick a different world map battle scene but I am not sure if all the battle scenes are accessible from the world map. For example, if you select a "Desert Palace" scene for a fight that is triggered on the world map, it could be that it would soft-lock because the "Desert Palace" scenes are not accessible. It could also be that the "Preloading" window (still in the "Enemy" panel) can fix that, if there is the battle scene amongst the objects that are preloaded that way.
I think that you should have no problem for putting a battle in the World Map that originates from another place at least. You just need to change the battle scene in the "Enemy" panel for that situation.

41
Hi g_west,

You indeed need to change something in the "Earth_Guardian_ATB" script. The lines deciding on its target(s) are the lines "set SV_Target = ...". It's not obvious to understand which "SV_Target" line corresponds to which attack in scripts like that, but I think that it's the last one of the "switch" control.

Since Earth Guardian is targeting itself, you must have Alternate Fantasy's changes, and Earth Guardian willingly Firaga itself because it has Auto-Reflect in this mod. The AI script of the normal version can be found here in a more readable form. It can help you to understand the AI scripts to compare how they are written in the Wikia and how they really are in Hades Workshop.

I don't have Alternate Fantasy's modified script right now, but assuming that Firaga is still the last attack (whose target is decided in the "case +6" block), you should change it from something like that:
Code: [Select]
        case +6:
            set SV_Target = SV_FunctionEnemy
            break
... into something like that:
Code: [Select]
        case +6:
            set SV_Target = SV_PlayerTeam
            break

42
That's correct.

Yes, the "SetCharacterData" is almost a "one-time event" (actually not one time but 2 or 3 times depending on the character), ie. it is triggered once when the character is initialised and if the character was initialised with the "temporary" flag, that character will keep that flag for the rest of the game or until it gets re-initialised.

=> If you load a save in which the character was already initialised with this flag, it will keep this flag, no matter what change you did to the event scripts of "Prima Vista".
=> Also, the temporary characters are re-initialised a couple of time: Blank is re-initialised right before the Plant Brain battle (there's a line "SetCharacterData" for Blank a bit above the line that triggers the Plant Brain battle in its nest) / Marcus is re-initialised before the 2nd fight against Black Waltz 3 battle / Beatrix is initialised once in Queen's Chamber before fighting Bandersnatches and is re-initialised in Alexandria's marketplace during Bahamut's attack.

=> You are able remove that "temporary" flag even in your end-game saves if you add new "SetCharacterData" lines at places where there wasn't before. For example, you can add a "SetCharacterData" at the end of a "Main_Init" function of any place so that it removes the flag. Make sure that you use the equipement set "255", which is the value for "don't touch the equipment", otherwise you could lose/duplicate pieces of equipments.

43
I naturally picked a scripting format that looks like C when decompiling FF9 scripts (and IA).
They had if/then/else but also switches, while and do/while loops, at least for that opus.

Code: [Select]
/********************************************************************
 *
 * Here are the different structures of the code controls.
 * On the left, the binary code,
 * On the right, corresponding C-like code.
 *
 * ************************* if/then *********************************
 * 05 Condition                 * if (Condition) {
 * 02 IfnJump --\               *   CODE_A()
 * CODE_A       |               * }
 *        <-----/               *
 *                              *
 * *********************** if/then/else ******************************
 * 05 Condition                 * if (Condition) {
 * 02 IfnJump --\               *   CODE_A()
 * CODE_A       |               * } else {
 * 01 Jump -----|--\            *   CODE_B()
 * CODE_B <-----/  |            * }
 *        <--------/            *
 *                              *
 * ************************ ifnot/then *******************************
 * 05 Condition                 * ifnot (Condition) {
 * 03 IfJump ---\               *   CODE_A()
 * CODE_A       |               * }
 *        <-----/               *
 *                              *
 * ************************** while **********************************
 * 01 Jump ----------\          * while (Condition) {
 * CODE_A <-------\  |          *   CODE_A()
 * 05 Condition <-|--/          * }
 * 03 IfJump -----/             *
 *                              *
 * ************************* do/while ********************************
 * CODE_A <------\              * do {
 * 05 Condition  |              *   CODE_A()
 * 03 IfJump ----/              * } while (Condition)
 *                              *
 * ************************ switch(ex) *******************************
 * 05 Condition                 * switch (Condition) from X {
 * 0B Switches 0  1 DEFAULT     * case 0:
 * CODE_A <----/  |    |        *   CODE_A()
 * 01 Jump -------|----|        *   break
 * CODE_B <-------/    |        * case 1:
 * 01 Jump ------------|        *   CODE_B()
 *        <------------/        *   break
 *                              * }
 *                              *
 * ******************** switch(ex)+default ***************************
 * 05 Condition                 * switch (Condition) from X {
 * 0B Switches 0  1 DEFAULT     * case 0:
 * CODE_A <----/  |    |        *   CODE_A()
 * 01 Jump -------|----|---\    *   break
 * CODE_B <-------/    |   |    * case 1:
 * 01 Jump ------------|---|    *   CODE_B()
 * CODE_C <------------/   |    *   break
 * 01 Jump ----------------|    * default:
 *        <----------------/    *   CODE_C()
 *                              *   break
 *                              * }
 *                              *
 * *************************** loop **********************************
 * FUNC_START <---\             * function {
 * CODE_A         |             *   CODE_A()
 * 01 Jump -------/             *   loop
 *                              * }
 *                              *
 *********************************************************************/

44
For trance and whether it's Blank instead of Amarant or the other way around, it's the same thing in HW : it's the character's flag "Temporary party member". That's a flag that is used when settting up the characters before they join the party for the first time.

Example, in Prima Vista/Cargo Room's script, in the function "Baku_Masked_Loop", you have this line:
Code: [Select]
SetCharacterData( 9, 1, 8, 21, 8 )This line setup Cinna in particular by enabling his flag "Temporary character". Without that flag, he would use Quina's model and portrait and would have trance just like the other party members (he wouldn't have it against Masked Man because trance is still disabled for everyone at that point).

I have no idea for gameshark codes.

45
@rassellek: Can't you just add +6 Magic to the weapon's stats?
I'll see what I can do (it can be useful) but if it's just giving stats to a piece of equipments, it's better to do it directly without using a SA feature.

@paky-outsider: Congrats!
I must say, not only I have stopped working on the PSX version of the game, but also I don't use CheatEngine at all and would have been totally useless to help with anything related to it.

46
Not yet.
DV is currently working on a major update from his end (amongst other things, he implemented Triple Triad in the game). I'll also do a couple of things afterwards.

47
The C# macros (and more generally the "CIL code" panel) don't work with the Memoria Engine mod.
I just added a "Break damage limit" option directly in Memoria though: it will be a new option of the next Memoria release.

48
The save editor is more suited for that, Rassellek.

You *could* force naming screens to appear by editing the field scripts of the fields you are currently in (in Hades Workshop, panel "Environment -> Fields -> select the field you're in -> Edit Script"), by writing a line like "Menu( 1, 0 )" for renaming Zidane, but that's not very convenient compared to using the save editor.

49
Ah, maybe you can't change "Format" opcodes for the PSX version of the game...
What happens if you delete that opcode? Careful, you won't be able to add it back, I think.

50
Replace "60000" by "60000L" in the code:
Code: [Select]
set Chocobo_HotColdPoints -= 60000LThat is because numbers higher than 32636 should be flagged as "long" numbers, otherwise they are stored as a 2-byte signed integer type.

Also, for the selectability problem, update the lines "EnableDialogChoices". You must both include the added choice to the available choice list (change "511" into "1023", or tick the next box in the script editor), and tell the game that the "default" choice has index 9 instead of 8 (change "set VAR_LocUInt8_2 = 8" into "set VAR_LocUInt8_2 = 9").

Also, when editing the text, there's an opcode that setups the choices ("FORMAT:Multichoice" in the PSX version): double-click to edit its parameter and do the same kind of changes there (number of choices => 10, "Cancel" choice => 9).

Pages: 1 [2] 3 4 5 6 7 ... 35