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 ... 26
Hi and thanks Rikku.

Yes, the "Steam version" includes Beatrix recruitable, but it is also the "base mod" of the Steam version, ie. version 5.0.
More explicitly:
  • 1st link is v3.2 of the mod on PSX: I stopped updating the PSX version because it had too many restrictions, and it doesn't let you recruit Beatrix.
  • 2nd link is v5.0 of the mod on Steam: it includes everything that is described in the OP.
  • 3rd link is v5.0 on Steam for those who already have Fraggoso's mod installed: it's exactly the same mod, but with compatibility tweaks.
  • 4th link is similar albeit concerning the Moguri mod instead.
  • 5th link is a sub-mod of the v5.0: it includes a recruitable Beatrix, the addition of "hidden dialogs" (ie. dialogs that were suppressed during the game's development and unlocked back with AF) and the addition of the 4 optional bosses in Memoria. It doesn't include any change for enemies or abilities that already exist in the base game.
  • 6th link is the Beatrix mod with Moguri compatibility.
  • 7th link is the source files (require Hades Workshop and dnSpy to work) for those who want to make their own changes on top of mine.
So whatever is you situation, you only need to download 1 link and not trying to install combinations of different links.

As for the language: yes, the mod is playable in all the languages supported by the game:
Spanish, English, French, Italian, German and Japanese.

Thanks Caledor.

@Xenogears: I don't understand what you mean. What did Albeoris tell you about these lines? What conversation (conversion?) are you talking about? What did you managed to do?

The base game is fairly easy, yes.
However, the mod somehow assumes that the player knows some of the game's mechanics. It is not per say "essential" to know them because there is never only 1 way to do things, but only strategies to ease the progress. For instance, I have heard of people who don't know about ATB tricks, the effect of the status Heat, which sidequests give good rewards or the way several bosses work (like Tantarian)... play the mod and struggle because of it (not to the point of being completly stopped but to the point of trying several times waiting for lucky attempts). In my opinion, these people had the possibility to learn the mechanics, maybe at the cost of a single game over, but they didn't so it may be a difficult thing to learn on the spot.

In short, I think that the mod is easier for someone who [doesn't know the game but has not problem with difficulty] than someone who [knows the game well but expect to win by mashing a single command].

Sorry for the tedious answer; that's not an easy question ^^"

It's not currently possible Xenogears, unfortunatly. That's indeed a problem with the widescreen mode: background pictures have a size adjusted to the screen mode used in the PSX version. These backgrounds have not been extended for the PC port (it would have been a huge work).

What might be done to fix some of these problems is to reduce the camera bounds. It can be done in HW for each field script 1 by 1 but it would be much better to do it with dnSpy/source code modding.

It wouldn't fix many fields, like Observatory Mountain's fields.

The positions of UI elements are stored in one of the archives (I don't remember which one though) as Unity serialized objects ("Transform", "GameObject", etc...). I don't know of any tool that would display/mod them nicely but it may exist since it's Unity's format.

Inside the code, you can use lines like that one to change things.
Code: [Select]
// I think this was a working example for BattleUI
this.CommandPanel.GetComponent<UIWidget>().GetChild(0).GetComponent<UIWidget>().SetRect( X, Y, W, H );
// ... or lines like this
this.CommandPanel.transform.localPosition = new Vector3( X, Y, this.CommandPanel.transform.localPosition.z );

But ask TehMighty because he worked a lot on UI and succeeded in having great results.

Dunno if elemental physical strikes exist, but doesn't this mean that the spell uses the element of the weapon for the sake of weaknesses/freeze/heat whatever and the element of the SPELL (not the weapon) for the sake of elm. boost alone?
Yes exactly. Not sure if it's an oversight or anything, but that's indeed how it works.

Still, "Command attack + 1 killer ability + front row" has same damage as "Jump + back row".

Ok I'm dumb ><

Damage Free Energy = (1.5 * Atk - Def) * Bonus
Damage Jump = 1.5 * (Atk - Def) * Bonus
Damage Shock = (3 * Atk - Def) * Bonus

They are not the same indeed. I stand corrected.
So actually, Jump's damage works as if you had 1 damage boost compared to the "attack command without damage modifier".

If you download the Source files of Alternate Fantasy, you'll have a description of the changes I made in the Readme.txt. I think that it can help you understanding what does what. However, the class "btl_calc" was completly changed and there is no details of the changes for that, except the description of the mod in its topic.

It is not very weak, no. The "physical strike" (Shock, Free Energy, etc.) formula is exactly the same (it also takes the defence into account) provided that it has a power of 15 (Free Energy is in this case for instance).

Damage Free Energy = (1.5 * Atk - Def) * Bonus
Damage Jump = (1.5 * Atk - Def) * Bonus
Damage Shock = (3 * Atk - Def) * Bonus

The difference is that Jump costs no MP, is available from the start and has the feature of making Freya untargetable for some time.
High Jump raises Jump's damage to "(2 * Atk - Def) * Bonus", which is the power of Scoop Art.
Of course, if you take damage boosts into account, then the attack command can be tremendously better (there's a reason why it's used in speedruns), but it requires a better preparation and being in front row.
However, the trance damage formula is really bad indeed. The added randomness (similar to Quina's attack) makes it very weak and it's not even counter-balanced by the multi-targeting since the damage are spread (so "more enemies = less damage per enemy").

In my mod, Spear has the same damage formula but it takes the properties of the weapon into account (elemental damage, killer abilities...) so it can be useful even in late game for damage. I had to edit the game's source code for that though. I also fixed the trance damage, removing the added randomness.

If you want to modify Jump's damage formula, you may need to edit the game's source code (that's the CIL code section, but I advise you to use an external tool, dnSpy, instead: it allows to modify the source code as well but it's way more advanced) but that depends on what you want:
1) If you want to make jump's damage use a different already existing formula (like Shock, where you control the multiplier), you can simply change it in the panel "Party -> Spells" and look for the abilities "Spear" at the end of the list: the first one holds the normal damage formula, the second one holds the trance damage formula.
2) If you want to use a new damage formula or if you want to modify Jump's "Freya leaves temporarily the field" principle, then you need to change the source code indeed. Specifically, you need the edit the class "btl_calc" (in dnSpy, open the game's "Assembly-CSharp.dll" and search for "btl_calc" inside the folder "-"). Here is what it looks like (I've rewritten the class in order to add comments and readability, but it's still C#). You can see that there is a case 48 and 83 for the formulae of Spear and Trance Spear in the main method CalcMain.

Yes, it works correctly and it uses the same kind of formula as the spirit and speed boosts.
Actually... I always thought that these were bonuses... but reading the formula again from the source code and Rebirth Flame's FAQ, it's more like an averaging than a bonus...
Code: [Select]
Damage = (Atk - Def) * (((Strength + OtherStat) / 2) + Rnd MOD (((Lvl + Str) / 8) + 1))So it uses (Strength + OtherStat) / 2 for these special weapons instead of Strength for the normal weapons?
I always thought that these weapons used Strength + OtherStat / 2... No wonder why there is not such a difference in the damage outputs.

Only the Save the Queen's damage formula can really be considered as a boost then.
The formulae displayed in HW are all wrong :/

That's the ID of Dagger's entry in the script.

In concrete terms, you go in the script, in the function "Main_Init" and search for the code line initializing Dagger's model:
"InitObject( ID, [Some other number, surely 0] )"
When selecting those lines, you have the drop-down menu of entries that appear on the right of the window. You know that the line concerns Dagger's entry when it's written there on the right.

The script entry ID is that number given as the 1st parameter of "InitObject".

Alternatively, you can simply write a line "InitObject( 0, 0 )" in any function of the field and search for Dagger's entry in the drop-down menu (it will update the ID automatically in the textual part then). And then exit without parsing.

There are 2 problems about that when modding the PSX version:

1) Not all the models are available in every field. Most of the time, the models and animations are packed in each field (so there are actually many duplicates in the game's datas) and you can use only the models that are there already.
Fortunatly, there are exceptions and Dagger's models are amongst them: the models of the party members (including the temporary party members) are always available, whatever the field. However, her full set of animations is not available, only the basic ones (stand, walk, run, turn left/right). It might be that the animations of both of Dagger's models (short/long hair) can be used on both models though.

2) You need to register the models and animations that you use in order to have them available. That's probably the problem you have there.
Outside of the script, there's a button "Preloading datas": go there and add Dagger's models and animations to the list of datas to use. You also need to link the model to Dagger's script entry ID there.

@Dorklord: Yes, that seemed weird to me as well... but I've double-checked the code several times and didn't see a bug, so I guess that's just because of damage roll. I didn't see that fleeing was problematic with the Moguri mod though; maybe that's because of controller compatibility? I guess they tweaked it since they at least changed the movement directions.
Strange anyway... but I have no solution.

@Ddeathscythe: No, I don't think so, unfortunatly.
Indeed, the new versions (PC, PS4, Switch, phones...) are very similar but not similar enough to do a port, even if we had the tools for these versions. I think that, let aside compressions, the "p0data" archives are called something like "s0data" for the Switch version, which is not a big deal, but the most important file, the Assembly-CSharp.dll, is different from a version to the other and I am not sure if someone could even use Hades Workshop on a non-PC version.

Thanks a bunch Dorklord! I fixed it :)

Thanks Dorklord.
However, I won't update the mod anymore except maybe for Moguri/Snouz mod compatibility.
So, no, party members don't join at lvl 1 (unless all your other characters are lvl1 as well) and Transcend's SFX will still be the same (and I like that :p). You can use the Memoria save editor without problem though.

Most bosses should be slightly easier in v5.0 due to the battle mechanics allowing more things to the player. However:
- Steiner's first battle was made even easier. I think that he was already nerfed in v4.5 because he could kill you too easily on bad RNG. He can still hit hard but that's less RNG-dependant now so he won't always use his best attacks.
- There is a reliable way to cure doom as soon as you fight Beatrix for the first time... On top of that, a doom-immunity supporting skill was added in v5.0 and is available for Freya/Steiner at that point.
- Necron is noticeably harder now, even though there are many possible strategies against it.

By the way, I'm french ;p

Thank you :)
Indeed, I decided to give only a minimal description of what the abilities do, following the principle of the original (I mean, Lucky 7's or Limit Glove's descriptions are basically "It deals damage"... very informative!). I made that choice mainly by laziness: it would have taken a lot of time to decide how to formulate complete descriptions of the abilities in all the languages and make sure that they are small enough to be contained in the battle help (in the menus, there isn't really a limitation of space but there is in the battles).

In the spreadsheet, I could write things in english only and use a formal description that would be a bit dry in-game. I agree that it's far from ideal though.

I look forward to see how you will fare against the new bosses! A couple of people commented them but they didn't make a video out of the fights :D
Until then, good luck!

Hum. I guess that you forgot to put the "sharedassets1.assets" which wasn't a modded file in the previous versions.

In the PSX version, I'm not sure. However, in the Steam version, it shouldn't last after the fight.
Dying indeed doesn't remove that status but being dead prevents from it to be applied.
So the only ways to remove that "Easy Kill" status (which should better be named "Easy Kill Proof" as it prevents different spells to affect the wearer) are (1) to finish the fight and (2) to use a Esuna-like spell that can remove it.

Normally, it is only used as an "Initial status" on the enemies so an Esuna-like spell may also remove it if it can target the enemies or be reflected. Removing it is unsafe as it can softlock the battle if something bad happens to an enemy that normally has that status (if it gets eaten, for instance).

The PSX version mainly lacks Beatrix recruitability, the new bosses and the rework of the battle mechanics when comparing to the PC version.

In more details,
Spoiler: show
A few dialogs that were suppressed during the game's development were put back in this mod. It includes the dialogs from the "Hidden Dialogs" patch plus a few others for which only the texts were kept.

Abilities, be it the player characters' or the enemies' ones, have been modified.
One of the point of the mod is too enhance the statuses. Some basic spells deal statuses additionnally to their damage.

Here is a list of the principal changes for the player's abilities:

Trance skills deal much less damage
What's that?! inflicts Blind to everyone now
Annoy has been replaced by Free Energy: a regular attack with 100% accuracy and no backrow reduce
Sacrifice has been replaced by Regenerate: use an ether on the team
Lucky Seven has been replaced by Warm Up: increase Zidane's strength by 25%
Thievery has been replaced by Transcend: bring Zidane to Trance

Fire spells have a chance to inflict Heat (base: 5%, 10% and then 20%)
Ice spells have a chance to inflict Freeze (base: 5%, 10% and then 20%)
Thunder spells have a chance to inflict Slow (base: 10%, 20% and then 40%)
Slow has been replaced by Annoy (80% of inflicting trouble)
Demi has been balanced from 30% of max HP with 40% accuracy to 25% of max HP for 80% accuracy
Death has been replaced by Gradual Petrify (75% accuracy)
Break is now an Earth elemental attack in addition to inflicting Petrify (30% accuracy)
Water sometimes inflict Shell to its targets
Meteor has been replaced by Waterga: Water damage plus Silence (50% accuracy)

White Magic
Panacea only cures Poison but is multi-targeting
Stona only cures Gradual Petrify but is multi-targeting
Confuse and Berserk are now magical attacks in addition to inflicting statuses
Most of status-inflicting spells have their accuracy upscaled
Holy sometimes inflict Regen to its target

The full powered Ark now deal damage twice, allowing to deal more than 9999

Fenril is a wind eidolon by default

LV5 Death has been replaced by LV5 Flare: inflict non-elemental damage to enemies with lvl multiple of 5
LV4 Holy has been replaced by LV4 Def-less: randomly decrease defence of enemies with lvl multiple of 4
LV3 Def-less has been replaced by LV3 Aerial Slash: inflict Wind damage to enemies with lvl multiple of 3
Doom has been replaced by Lightning: Thunder damage plus Silence to one target (50% accuracy)
Roulette has been replaced by Self-Destruct: convert Quina's current HP into damage on all the enemies
Aqua Breath has 75% accuracy instead of 50%
Matra Magic has been replaced by Zombie Breath: non-elemental damage plus Zombie on one target (20% accuracy)
Limit Glove has been replaced by HP Switching: switch Quina's current HP with an ally's ones
Twister has 50% to inflict Float in addition to its Wind damage
Earth Shake has 100% to inflict Slow in addition to its Earth damage
Frog Drop has been replaced by Devil's Snack: use a Dead Pepper on all enemies
Freeze has been replaced by Cocytos: Ice damage and inflict Slow on one target (100%)
Mustard Bomb has been replaced by Phlegethon: Fire damage and inflict Haste on one target (100%)

Lancer's damage are increased, as well as its MP cost
Dragon Breath has been replaced by Dragon Life: apply Auto-Life on Freya
Six Dragons has became single-targeting for 15 MP
Cherry Blossom is more powerful
Dragon's Crest has been replaced by Ikari: deal physical damage and Trouble to all the enemies (50%)

Aura has been replaced by Starburst: deal 60 times an enemy's level as damage
Demi Shock's accuracy has been upscaled from 50% to 80%
Countdown has been replaced by Concentrate: increase an ally's Magic by 33% for 28 MP

Iai Strike has been replaced by Quadraslash: a physical attack using the elemental power of Fire, Ice, Thunder and Water
The accuracy of the 4 break abilities have been upscaled
Thunder Slash now inflict 21% of target's max HP as thunder damage
Climhazzard has been replaced by a weaker Shock: deal 2 times the physical damage on one target
Shock has been replaced by Sword Dance: deal 2 times the physical damage on all enemies ; it's a magical attack

Added 2 abilities for the time he is with you on the disc 2: Strong Hit (more damage but harm Marcus) and Contaminate (100% to inflict Poison)

Ragtime Mouses Quizz has been refreshed
The Cotton Robe money trick was removed (they sell a bit less)
The enemies are stronger and more resistant
Few weapons can be used by several characters (for instance, Dagger can use the dagger)
The ultimate weapons give a big boost to main characteristics (Strength, Magic, Speed and Spirit)
Enemies' spells have been modified using similar principles as the player's spells
Phoenix Pinions cure Doom ; they also cost and sell cheaper
A mini-game has been re-added at the beginning of disc 3
Excalibur II can be acquired by two different methods:
1) Reach and beat Hades in less than 14 hours,
2) Get all the collectable treasures of the game (there are 3 little mistakes allowed) to obtain the higher treasure rank. Including a few Mimics, that makes 404 unique treasures to find.
And a few other things...

Your error is perfectly understandable: that's because of me.
I decided to automatically name several functions with "XXX_Loop" (the functions with ID 1) because that's what they do most of the time. However, it's not because they are called like that that they loop: they loop because they have the lines "Wait(1)" and "loop" at the end most of the time.

In this case, "Lich_Loop" doesn't have those lines but simply returns at the end. You don't want to just replace the "return" by a "Wait(1) + loop" either because it would run the dialog again everytime.
The easiest solution there is to put the looping part in an infinite "while" loop:
Code: [Select]
    // ...
    RunBattleCode( 35, 0 )
    while ( GetBattleState != 4 ) {
        Wait( 1 )
    while ( 1 ) {
        if ( #( SV_FunctionEnemy[HP] <$ 10000 ) ) {
            if ( VAR_LocUInt8_60 < 1 ) {
                set VAR_LocUInt8_60++
                set SV_FunctionEnemy[HP] =$ 40000
        Wait( 1 ) // If you forget that, the game will freeze

More generally:
‣ The "XXX_Main" function runs as soon as the entry is initialized; the script level is set to 0 until it returns, which means that you shouldn't use any RunSync or similars inside the main function that would run a script of the same entry (you can use a RunSync on another entry though, provided that entry was initialized and its main function already returned),
‣ The "XXX_Loop" function runs right after the main function ends; the script level is defaulted to 7 so you can use RunSync codes inside. It runs only once.

In Field and World Map scripts:
‣ The "XXX_Reinit" function runs after returning to the field from a battle. Several datas are flushed when a battle triggers and this function set them back.
‣ The "XXX_Range" function runs every frame when the player's character is close to an object (determined with the collision radius set by SetObjectLogicalSize) or inside a region. It should only be used with entries initialized by InitRegion or InitObject.
‣ The "XXX_SpeakBTN" function runs when pressing the "confirm" button while the player's character is next to the object and facing it (the radius is determined with the talk radius set by SetObjectLogicalSize) or inside a region. In Steam, its presence adds an icon over the player's character. It should only be used with entries initialized by InitRegion or InitObject.
‣ The "XXX_CardBTN" function works the same as "XXX_SpeakBTN" except that it's triggered by the "card/moogle" button.
‣ The "Main_Unk" function runs when a menu opens on a World Map (either the player opens the main menu or the script issues a Menu code).

In Battle scripts:
‣ The "XXX_ATB" function runs when the enemy's ATB gets full. Attacks issued inside are added as "Enemy Command" at the end of the command queue. It has to issue an attack command.
‣ The "XXX_Counter" function runs when the enemy has been affected by an attack from a player character that was not a counter-attack or a Charge!, etc... and if it still has more than 0 HP. Attacks issued inside are added as "Enemy Counter" commands and take priority over most of the other commands.
‣ The "XXX_Death" function runs when the enemy has been affected by an attack from a player character, if it has 0 HP and if the related flag is enabled. Attacks issued inside take priority over most of the other commands. Attacks issued inside are added as "Enemy Death" commands and take priority over most of the other commands.
‣ The "XXX_CounterEx" function runs when the enemy has been affected by any attack.

@gledson999: Here are the offsets of the charmap file, in the PSX US version.
Disc 1: 0x3C5478 and 0x7B59AC
Disc 2: 0x3C5DA8 and 0x7B62DC
Disc 3: 0x3C5DA8 and 0x7B62DC
Disc 4: 0x3C5478 and 0x7AA1EC
The first offset is for the charmap of the "Picture 1" of the "Generic UI" in HW, while the second offset is the important one, for the "Picture 1" of "Charmap" in HW.

As said, the format is given by this stucture:
Code: [Select]
Unknown, usually 0 (4 bytes)
Unknown short int (2 bytes)
Unknown short int (2 bytes)
Number of characters, short unsigned int (2 bytes)
Padding, usually 0 (2 bytes)
    Img_x (1 byte)
    Img_y (1 byte)
    Img_width (1 byte)
    Width (1 byte)
] (x Number of characters)
Also, you need to know that these font images are compressed in a 2:3 format, ie. 2 colors produce 3 pixels (a mean color is computed and the middle pixel in the x-axis is given that mean color). The coordinates reflect this compression: a width of 6 in the charmap file actually means a width of 9 pixels in the bitmap.

I can do that but in 2 weeks only, once I return home.

@gledson999: The VWF is not in a standard format (you can see its format here).
I don't have all my FF9 datas available for some time, but the file is a 0x0D chunk that is approximately at position 0x3cb048 (it depends on the disk and the language; 0x3cb048 is the disk 3 of the french version). For informations on chunks and cluster datas, you can check Qhimm's wiki.

@rpg-lad: As I said, you can't mod on top of the Beatrix mod if you don't use the source files of the Beatrix mod. That's this download link.

@anxietymafia: Not to my knowledge, no. You can try to find that icon in the "Environment -> Texts -> Generic UI" and edit the image to remove the icon (I don't remember for sure but I think that you can draw pixel by pixel in HW on these images).

I don't know why that's happening to you.
Your planned order of work looks fine if "Beatrix Mode Import" means that you import the AFBeatrixOnly_v5.0.hws on a clean non-modded game.

You should do this:
1) Import the Beatrix HWS file, do the modifications you want, save as HWS (the .hws will contain both Beatrix's changes and your own),
rather than that:
2) Do the modifications that you want, save as HWS (your modifications only), import the Beatrix HWS and then your modifications again.
Indeed, it is possible to import several HWS one after the other but the latest import will have priority for everything that is common to both mods. For instance, if you modify any of party's spells, all of them will be stored in the HWS file (not only the bit you've changed). You can see in the "Tools -> Mod Manager" how each section is splitted (for instance, if you modify an enemy's HP, all the other enemies are not stored in the HWS and even that enemy's AI script won't be).

Pages: [1] 2 3 ... 26