Messages - Karifean

so there's a few ways to change characters' Attack/Magic/Defense/MDefense/Def% bonus values during battle. From what I know they're only controllable through the "Additional Effects" on Attacks, namely effects 0x15, 0x16, 0x17 and 0x1C. Now the problem here is that while 0x15 and 0x1C affect the target of the attack as is right (given that they're from Hero Drink and Dragon Force respectively), 0x16 and 0x17 affect the caster instead. I would like to add magic spells to the game akin to the Persona series' Tarukaja, Rakukaja and Sukukaja spells (if you don't know them, basically think Attack Buff, Defense Buff and Agility Buff) but the fact that these affect the caster instead of the target is a bit of a problematic wrench there. And from what I know there's no other way to affect these stats.

Is there a way to change these Effects so that they affect the target of the attack instead of the caster, like 0x15 and 0x1C? Or is there maybe a different way to affect stat bonus values altogether?

It should happen to every character that survives the end of the battle (meaning if they are dead at the end of the battle their limit bar will not be affected, but at that point it should be 0, right?). There may be some cases where this code doesn't activate, but I'm pretty sure it happens any time experience is gained (you didn't have all characters run from battle).

Well that's a problem, since your limit bar is saved as-is in those cases. Can something be done so it works on *all* battles?

Hmm... it seems to work only when it feels like it. Like I'm pretty certain I saw the Limit Bar go down at some point, but at another point both Cloud's and Barret's were nearly full at the end of a battle and they were both still that high when I entered the next battle.

The plan is to make it so that the Limit Gauge halves for all party members when a battle ends. So if they had a full bar and finish the battle it's now at 50%, if they enter another battle and finish it without getting hit at all, it's going to be at 25%.

Regarding max HP, I presume there's no way to modify the correct value then? To, like, call an outside script that can actually do it or something?

Regarding the limit bar, hmm, I haven't done direct .exe asm changes in FF7 before (only editing single hex values). Can you point me to a place where I can start educating myself on how to approach this?

Hey there. I've just had some ideas for a mod of mine to make the game balance a little different, but unfortunately I've run into problems with them.

First is to have a fraction of all damage you take persist to your max HP for that battle. Easily done with a Post-Attack Character AI script in WallMarket and works fine; only problem is that the max HP value does not update in the battle menu. It works - you cannot heal above the new max HP value - but the menu doesn't reflect that. Anybody know a way to deal with this issue in the PC version?

Secondly, I'd like to halve the party members' limit gauges after every battle to make it more of a challenge to use higher level Limit Breaks effectively. Fortunately there's a Post-Battle Character AI script I can (hopefully) use for that purpose. Unfortunately, I haven't found anything indicating the address on this address list or WallMarket/ProudClod's dat files. Tifa's Premium Heart uses the value for damage calculation so I'm guessing it's readable? Anybody know this one?

You describe exactly how I would've liked it to work, but Item Damage Formula is "Power x 16", and the 'Power' of the Attack Command is 16. The user's Level or Strength or Attack Damage are completely ignored.

Hmm, that's a possibility, I don't really know how those formulas work but I'll look into it.

So I had the idea of having Barret's and Vincent's guns work similar to FF XII, in that they completely ignore the enemy's defense, always hit, and mostly (in FFXII: completely) run off their own attack stat rather than the user's stats having much/any influence. So I turned to the item formula.

Now of course the problem I had already predicted would appear did indeed appear, which is that the attacks always deal between 240 and 256 damage, because Attack has an attack strength of 16, and nobody cares about the weapon's or character's strength. Is there an easy way to circumvent this problem or would that require rewriting the game's damage calculations? Or is there a good alternative? If it doesn't work out I guess I'll just go with the regular damage formula.

Even if that's not what you're using I'll explain anyway.There's a table of bytes located at 0x91EAD0 (0x51D4D0) that is 16 x 10. These are either 0, 1, or 2 (other values will cause graphical glitches). When the Limit attack is chosen this is used to form the reel for the limit attack. 0 is miss, 1 is hit and 2 is yeah!. The entries on rows 3, 6, and 9 are all 0. That will make them all miss. Setting them to other values will re-populate them.

HOWEVER! Here's some bad news. It won't work. Due to restraints on the mechanics (which I won't bother going in to), there can only be 8 attacks chained at a time. Setting third limits will make a maximum of 10 so you would NEVER GET 3-2 AND HIGHER. This happened to me years ago when I was GS-ing the PSX game to enable all limits. If you tell the game Tifa has learned her X-3 limits it will bring up those full-miss reels. Even if you get Yeahs on all of the valid ones, it won't go higher than Dolphin Blow. I never saw Meteor Strike or Final Heaven until I played the PC version and legit'ly taught it to her.Altering this would require a re-write of some core mechanics that aren't entirely known. It is possible, but not recommended.

Thank you very much! Exactly what I'm looking for. That second part shouldn't be a problem since I didn't actually add new Limit Breaks, but reorganized them so most characters have 3 Level 1 LBs, 2 Level 2 LBs, 1 Level 3 LB and 1 Level 4 LB. With some rebalancing of required HP loss for each Limit Level and added elemental attributes to some of her hits, it's worth thinking about which Limit Level you'll pick. If the enemy absorbs Water you'll want to get the MISS on Waterkick and Dolphin Blow anyways, you know?

So I've been experimenting with letting characters have 3 Limit Breaks on the LB Level 1. Problem is, Tifa's reels don't play along. The reel for her third Level 1 Limit Break is always a pure MISS reel. Is there any way to fix this?

So I've just noticed I was using this "outdated" version of ProudClod for a while now. This may be unrelated but it seems my formations got quite screwed up (and yes, I did check the scene.bin lookup table in the KERNEL, it's correct). Like for example instead of fighting Airbuster, I suddenly fought three Special Combatants that overlapped (as in, their position was the same). Or sometimes enemies in the back row would suddenly appear in the front (and you'd get an Out of Range if you tried attacking them O_o).

I redownloaded PC just yesterday so I should have the up-to-date version, and I had hoped that this PC simply read and stored values somewhat wrongly, but it seems the problem isn't quite that easily fixed. The strangest part being.. I never even tinkered with the formations at all. Just the enemies.

I'm posting this here because I can't think of anything else that could've caused this. Anyone know a way to fix this?

Have you thought about moving them to previously empty or dummied out scenes so you could have this as an optional add-on to the game instead of a conversion? In theory you should be able to copy entire scenes and just adjust the battle called for that.

Well I kinda started modifying some bosses and it eventually evolved into what it became. Had I from the start decided to make ths a mod, I might've done that. Although I'm not sure if there would've been enough free spaces...

Quote

How long did it take you to create the new attacks, AI and(?) animations(if any)?

No new animations, just a lot of ProudClod'ing. As for AI, I always tried to at least keep the spirit of the original battle a little bit. Take Guard Scorpion for example. He still uses his Search Scope, but for one, it reduces your HP to 1, secondly, he casts Bolt3 on himself during his Tail Phase, and third, his Rifle inflicts Berserk which might cause a character to trigger his counter. Aps was a lot simpler, I just adjusted his abilities a bit to make them more unique and had him absorb Water. From that point it was just determining when he should use what.

Some bosses had an entirely redone AI and attacks, like Rufus. A lot of the multi-enemy battles are similar in nature though, there's one that takes care of the other while one is the big hitter.

I spent a lot more time planning than coding. All in all, I'd say one boss on average took around 5 hours' time.

Did you give the NCPs dialogue choices and upon selection pull a battle from the scene.bin?

Exactly.

Quote

What are you doing about the 'set music for battle'?

Birth of a God plays during the battles. But if you don't like it, PC FF7 always gives you the option to turn off the music and have your own playing in the background.

Quote

Did you change the background layers for the encounters in the scene?

Yes, the background is the Battle Square Arena.

Quote

Is this monster hall triggered by a gamemoment variable or is it technically always available?Do you have to have fought a boss before you can fight the super boss version? (again, gamemoment variable)Will the super boss version replace the boss in his original location if you play the game normally?(Since there are only so many bosses and there are actually a lot of empty slots it should be possible to combine this)

Since this mod is made to be played with a high-level team at the end of the game, the Hall of Battles is always available and yes, the bosses replace the original versions - except for the final boss battles because I wanted you to still be able to play normally as long as you're in the endgame. I think if you try talking to the NPCs in there while you're in the Shinra uniform on your first visit to here, the game is likely to lock up.

If you were to try playing a new game with these changes intact, Guard Scorpion will probably be an insurmountable barrier.

File Type: RAR, includes one EXE file (patcher) and one TXT file (readme).

What is this?

This is a slight modification of Final Fantasy VII PC, simply changing the "Hall of Beginners" in Junon to a "Hall of Battles". In there, you can fight all the storyline bosses in order, but they've all been made into superbosses! Do you think you can beat them?

The idea is that you install this mod, load up your best save file and give these bosses a try. There're no rewards for it, it's just to challenge yourself. All bosses' AIs and stats have been reworked. Many of them still act in a similar fashion as their original versions did, but none are the same. How far can you get before you get (your first) Game Over?

I strongly urge you not to use any of the 'forbidden' items or materia. They are classified as such for a reason.

How to install this mod?

The following files from an English FF7 PC installation are required:scene.bin, KERNEL.BIN, flevel.lgp, battle.lgp

Copy them into a separate directory, all together, and then let the patcher run. Replace the original files with the patched ones (don't forget to make backups of the original files!) and you're done!

Note: Even though the KERNEL.BIN must be updated, this is solely for the scene.bin lookup table. Character stats and materia functions etc. are completely unchanged.

Further information can be taken from the Readme.

Special Thanks goes to SegaChief, XeroKynos, NTIFC1 and GeneralIronside for helping when I needed it. You guys are awesome!

So I'm trying to make a custom Jenova SYNTH battle and I'm having some trouble: one of the tentacles is in the wrong spot. As in, both tentacles' "target" marker are on the right tentacle.

Now I don't quite understand what even places the markers in the first place. All 3 instances of JSYN are in the same location, at least in the Formation preset, yet I assume via AI their marker is replaced to where, graphically, the tentacle is located. One line of code seems to be doing this:

Self.Unknown(4278) <- 16This applies to the JSYN instance with FormationNumber == 1. For the instance with FormationNumber == 2, this variable is set to 20 instead. Finally, the instance with FormationNumber == 0, in other words the main body, has it set to 3.

This is the case both in the original JSYN battle as well as my own. Yet the problem still occurs.

If you need it for better understanding, here is the Pre-Battle Routine of my homemade JSYN:

Seems the problem lies elsewhere: a test message revealed that the query (Self.FormationNumber == 1) never returns true, which means that both tentacles have their Unknown(4278) variables set to 20, which makes them overlap. Now to find out just why the condition doesn't work...

Editga:

Solved it, the problem was that I called on the FormationNumber with the "02" command instead of the "01" command. Silly me. Works fine now.

So basically, use the BitCount(Self.FormationNumber) == ActiveMask.FormationNumber variant if there are multiple instances of one enemy and you want to refer to the first of them? Or... in the reverse case, there are multiple instances of your own enemy type, then only the first of you can successfully refer to the boss (the monsters in the Sample:H0512 fight do this)?

Edit: And one thing that would definitely help - can you refer to other instances of your own Enemy ID by using the ActiveMask.EnemyID method and then doing a bitwise AND with NOT Self? I haven't quite understood how exactly masks and lists work yet. Edit2: Okay, just found that Nibel Wolf does that so it should work.

LocalVar:00XX <- (BitCount(Self.FormationNumber) == ActiveMask.FormationNumber) LocalVar:00XX <- (LocalVar:00XX.EnemyID == ???) Both of them are used quite a bunch of times. The Rufus battle uses both; Rufus uses the top version, Dark Nation uses the bottom version. And yet, I can't quite see through it. Sometimes it randomly stops working, especially when using "manipulation" - as in changing the Self variable for a moment to have another enemy execute an attack. And what is does that line in the middle actually do?

To give a more concrete example, I have modified Dark Nation to use a custom skill (ID 03E9h/1001) on Rufus if it dies and Rufus is still alive. The following code comes into play:

Just noticed what may have been the problem. In your code, you set the address 4024 of all the Pyramids to 0. That adress is the "MainScriptActive" flag. I on the other hand have been setting address 4023, the "Enabled" flag, to 0.

0x000Self.Status:Haste <- 00x00ASelf.Status:Regen <- 00x014TargetMask <- (LocalVar:0020.FormationNumber == 0) 0x022TargetMask.Flag:MainScriptActive <- 00x02CTargetMask <- (LocalVar:0020.FormationNumber == 1) 0x03ATargetMask.Flag:MainScriptActive <- 00x044TargetMask <- (LocalVar:0020.FormationNumber == 2) 0x052TargetMask.Flag:MainScriptActive <- 00x05CTargetMask <- LocalVar:00200x063Perform("Delete Pyramids"[0197], EnemyAttack)0x069SCRIPT ENDDelete Pyramids is now simply (Report), but with the target selection Sega posted and the Shout element. That way, the only way the player can put the Death weakness to use is with Blade Beam. Could've also done it with a Death weakness to a status effect, but it's fine.

0x000Self.Status:Haste <- 00x00ASelf.Status:Regen <- 00x014LocalVar:0000 <- 00x01AIf ( (FlagBit(LocalVar:0000).Status:Imprisoned == 1) )0x01A{0x028Display String: "imprisoned enemy"0x03ATargetMask <- (LocalVar:0020.FormationNumber == LocalVar:0000) 0x049Perform("Delete Pyramids"[0197], EnemyAttack)0x04FTargetMask.Flag:Enabled? <- 00x059LocalVar:0000 <- LocalVar:0000 + 10x063If ( (LocalVar:0000 >= 3) ) // Else goes to 0x01A0x063{0x06CTargetMask <- Self0x073Perform("(Report)"[0164], EnemyAttack)0x079SCRIPT ENDWhat's strange is that the test message "imprisoned enemy" is displayed correctly, but Reno shows no signs of using his ability at all. The If query also works as the message is not displayed if no character is trapped when Reno dies. The ability also seems to work since I had him use it on himself in the Pre-Battle script and he did show his hurt animation - which he doesn't do in the Death Counter. It's as if for some odd reason he just doesn't use the ability at all. And as a result of that the battle doesn't end. (It does if there's no imprisoned enemy). Actually, since the Pyramid becomes untargetable, he might even be using the ability, but he neither visibly does his hurt animation, nor does the battle end. Then again, that is probably just because of the Enabled=0 line. I don't get it.

The ability itself has Attack Damage Type 40h (also tried 42h, doesn't seem to matter) and is Shout-elemental but besides also being targetable is a clone of the (Report) move. I also tested giving Reno a Shout Death Weakness and he DID die when using it on himself so yeah, no problem there.

And simply setting HP to 0 didn't work either. In fact, the Pyramid stayed targetable and would refuse to die (Sephi's Yummy Mummy A comes to mind), so I quickly abandoned the idea.

And before someone assumes it's because of the LocalVar0020:FormationNumber == LocalVar0000 targeting, I have the same targeting system in my Use Pyramid routine and it works fine there (I use a different variable because 0000 is my turn counter):

Unfortunately, that was not it. I did indeed still have Reno use (Report) because the Turks' fleeing animation is one of the few unique death animations that don't cause infinite Wait Mode and will thus work fine. I even moved the Pyramids' use of Vanish just after the Remove Imprisoned line, so it should be EXACTLY as if you'd kill a Pyramid (except for the flags on the Pyramids themselves).

No dice, it does not work. Since the Pyramids do vanish in an IF query that checks for Imprisoned characters, the game obviously still recognizes them as Imprisoned characters, but removing it simply seems to not work.

A bit on the subject, how do you use AI scripting to force an enemy's death exactly as if they'd died regularly?

Death Counter:0x0001100000x00360000x005900x0061220700x0090200200x00C0240600x00F800x0100100000x013400x014900x0151220700x0181040230x01B800x01C60000x01E900x01F1220700x0221040240x025800x02660000x028900x0290100000x02C870x02D00401F0x030800x03160010x033400x0347000680x0371100000x03A870x03B1040230x03E800x03F60010x041900x0421100000x045870x04610401F0x049800x04A60000x04C900x04D1200400x0500220600x053900x0541220600x0570220700x05A900x05B60200x05D61014E0x060920x0611220600x0640200400x067900x0681100000x06B0100000x06E60010x070300x071900x0720100000x07560030x077420x0787000060x07B1220600x07E1040080x081800x08260000x084900x0851220600x08810400F0x08B800x08C60000x08E900x08F93Reno “Hmph. I'll be back.”0x0AAFF0x0AB1220600x0AE10402C0x0B1800x0B260010x0B4900x0B51220700x0B80220A00x0BB900x0BC60200x0BE6101640x0C1920x0C273And the "Disassembled" version:

So I'm making a mod with direct battle transitions, Hojo-style. One major problem that arises is the Imprisoned status. Some enemies in the gauntlet - in this case Reno - are capable of inflicting this status effect on party members. Problem is, if it is not remedied until the enemy is defeated, it will never go away. The character will remain inactive forever.

Obviously, I have the un-imprison routine (sets Flag:Enabled to 1 and Status:Imprisoned to 0) in Reno's Death Counter script and even in the following enemy's (Sample:H0512's) Pre-Battle script. Doesn't matter, the characters remain Imprisoned. I have no idea why the status refuses to be remedied. Making the Pyramids use their Vanish skill also doesn't work.

I even tried making Reno's (Report) ability target all party members and remove the Imprisoned status. It ended in a Game Over, don't ask me why.