FFVII Enemy Database & Calculator V1.0.0

DynamixDJ

DynaGamer
AKA
Josh
FFVII Enemy Database & Calculator V 1.1.0

This database has been built using Microsoft Excel and acts as a multi-purpose search engine containing Enemy, Attack, Formation, Item, Materia and Field Map data all taken from the scene.bin, kernel.bin and flevel.lgp respectively. You will also find a fully working Damage Output Calculator, a Damage Overflow Calculator, and an 'Average Spoils Per Screen' Calculator.

Created for:

- Casual players
- Speedrunners
- Modders (Database can be used as a canvas/template for designing a new mod)
- Walkthrough/FAQ writers
- Coders/Tool Writers


Download here:

Normal Version: https://drive.google.com/open?id=0B8OpCQuDA-lKZkN5cVdYbXA1OFk (12.8 MB)
Pictures Version: https://drive.google.com/open?id=1dZKZvFfiosQPiSpAVRNJstbAUpglTdgZ (236 MB)

Both files are too large for Google Sheets to open, so you will need to download them to use them. The files are macro-free. Only download the Pictures version if you know your computer can handle the file. Additionally, you may experience compatibility issues if not using Microsoft Excel.

The Normal version and Pictures version both work the same; the only difference between the two is that the Pictures version contains embedded pictures of all Enemies, Items, Field Maps and Battle Backgrounds within the "Database" section, whereas the normal release includes hyperlinks to uploaded versions of the pictures.

DATABASE FEATURES:

Enemy:
Search via Enemy Name or ID to display all basic stats for the searched Enemy, along with Steals, Drops and Morphs; Elemental and Status attributes; and "Lookalikes". Also shows the Formation ID which the searched enemy appears in, and the Field Screens/World Map areas where you can encounter that enemy.

Lists detailed attack information for all 16 Attack slots for the searched enemy, as well as the three assigned Manipulate Attacks.

"Advanced Search" feature available, which allows for search criteria such as:
- All Enemies that are Lv 24
- All Enemies that have a Defence value of 60
- All Enemies that take Double Damage from Fire

d7flvbS.png

1UHnfTh.png


ZVlsich.png


gPmdVYG.png
Attack:
Search via Attack Name or ID to display the basic stats for searched attack (MP Cost, Attack power etc.); Elemental and Status attributes; Target Attributes; Attack Formula used; and other info such as additional effects used, random variation on/off etc.

Lists all enemies in which the searched Attack can be found upon, as well as a base damage calculator in which one can use the Enemy ID to calculate the base damage value quickly.

"Advanced Search" feature available, which allows for search criteria such as:
- All Attacks that have an MP cost of 30
- All Attacks that use the Lightning element
- All Attacks that use Attack Formula 26

A list of "Additional Effects" and their descriptions can be found by navigating past the Advanced Search feature.

ET04yNo.png

y2MZVLO.png




TZmVY8y.png
Formation:
Search via Formation ID (decimal value) to display all stats for searched formation: Escape Counter; Battle Background used; Battle Type and Setup Flag used; and whether or not the Formation is used within the battle square.

Shows each enemy found within the Formation (3 max), along with the Qty of each enemy (6 total for the Formation), EXP, AP and gil earned, and all basic stats for those enemies. Also indicates the row positioning of the enemies within the Formation, the cover flag used, and the enemy flag used. Lists all Field Screens/World Map areas in which the searched Formation appears in.

Navigate past the Advanced Search feature for a description on "Setup Flags", "Battle Types", "Enemy Flags", how the Cover Flag works, and also a list of the Battle Backgrounds used (along with embedded pictures for the Battle Backgrounds).

"Advanced Search" feature available, which allows for search criteria such as:
- All Formations that have an Escape Counter of 3
- All Formations that are used in the Battle Arena
- All Formations that use Battle Type 4 (Pincer Attack - Enemy attacks from both sides)

o2cIxIH.png

cvgy8gP.png


9Gecy1H.png
Item:
Look up all Items/Weapons/Armour/Accessories. Note that the search priority runs from left-to-right, meaning, if you search via item Name then you cannot search via Weapon Name until you have cleared the Item Name search criteria.

Shows all relevant stats pertaining to the type of Item you are searching for (weapon/armour etc.) - the result boxes will appear/disappear accordingly.

Lists all enemies that the searched Item can be stolen/dropped/morphed from, along with all Field Maps and Shops that you can find the Items in.

Shop look-up available, along with Key Items.

Five "Advanced Search" features are available, which allows for search criteria such as:
- All Items that are not sell-able in shops
- All Weapons that are not throw-able
- All Armour that boosts the Magic stat
- All Accessories that Defend against Petrify
- All Shops that are Shop Type 6 (Accessory Shop)

E9jvnX5.png

NyZYggm.png


ynJpV2U.png

JPx4f4A.png

ryUP5W7.png

BlR65Li.png


GF3PZtX.png


i2qdaTX.png


RenXKMK.png
Materia:
Search via Materia Name or ID to display all relevant information for that Materia. The effects of the "Modifier Types" vary from Materia to Materia; see the "Materia Modifier Notes" to clarify what those effects are.

Lists all Field Maps and Shops that hold searched Materia. Also shows info on the five abilities used by the Materia.

Enemy Skill look-up available, along with Command look-up.

Three "Advanced Search" features are available, which allows for search criteria such as:
- All Materia that deplete Strength by -2
- All Materia Attacks that are reflect-able
- All Commands that cannot toggle multiple

XTBeGLx.png

0fj58a2.png


tTHdxUw.png




h9X2BRI.png


FA3C2QN.png
Maps:
Search via Map ID, Name or Description to bring up a range of info for that map, including: Enemies and Enemy Skills learned on map; Formations used on map along with basic stats for each enemy; Enemy Drops, Steals and Morphs on map; Items, Materia and Key Items collected on map; and, Shops found on map.

Also lists Elemental strengths/weaknesses, Elements used by enemies, Status vulnerabilities, and, Statuses used by enemies.

QDxe9xj.png

oVZA43u.png

d2WDGYB.png


mHi2WPh.png


2P8muCX.png


yNXOlwW.png


vqbAMW1.png


xMjvSNy.png


zFt1dr9.png
Map Average Calculator:
Search via Map ID, Name or Description to list all Formations that appear on that map, along with all basic stats for the enemies found within those Formations. An average is then calculated to display the average EXP, AP, gil, and all other stats for that map.

Note that the average taken can be considered a true average, seeing as the calculator takes into account the individual encounter rates for each formation, and also the way in which the game first considers the "Special Battle" chances, followed by the "Normal Battle" chances (big thanks to NFITC1 for help with the maths behind this).

The averages calculator can be modified using the appropriate Materia modifiers, such as Weapon Growth, Exp Plus Level, Gil Plus Level, Enemy Lure/Away Level, and, Pre-Emptive Level.

etnuwUn.png

PQsbuXj.png

oeRmumh.png


GFSlvBo.png


x63iMOm.png
Damage Overflow Calculator:
First enter the player's Lv and Att, followed by the enemy's Def value (or use the enemy search field to find Def value) to make the calculator work. You can optionally enter the Hero Drink qty and Power value to calculate damage output to see if damage overflow has occurred at the Base Damage stage.

Regardless of the Hero Drink and power values entered, the calculator will take the player's Att, Lv and the Enemy's Def values to calculate the Power value required to cause overflow at the base damage stage (before any damage modifiers such as Critical come into play) for each qty of Hero Drinks. Only Barret and Vincent can overflow at the Base Damage stage, and their respective "kills needed" and "AP required" values are shown accordingly.

Continuing with the same Att, Lv & Def values, the calculator will also work out the Power value required to cause overflow at the Random Variation stage (after things like Back Damage and Critical have been considered) for each amount of Hero Drinks. All characters barring Aeris can overflow at the Random Variation stage.

Scroll to the "Useful Info" section to find the max Power value attainable for each character.

Lastly, a "reverse calculator" has been included which will calculate the maximum Def value you can overflow with based on the Power value and Hero Drinks used (and of course Lv & Att).

b6at3iz.png


iDUBXPg.png


njJISKa.png


daYSRkV.png


pE58wtU.png


8aCdced.png
Damage Output Calculator:
The cells highlighted in bright red can be edited here, unlike the other sheets in this database.

If you are unfamiliar with the various formulas used, then you would benefit from scrolling down to "Formula Info" to familiarise yourself with the various battle formulas in-play. The most common physical attack formula is 11, and the most common magical attack is 22. Usually, the Power value is 16, which indicates 1x normal Power. If the Attack had a power value of 32, then it could be considered 2x normal power.

If you know the Power value and formula for the attack used then enter those values into the first search field; alternatively, you can search via Attack name or ID to find the Power and Formula used. Note that the unused search fields will grey out accordingly when you fill the search fields; to use the greyed out fields again clear the current search fields. Turning Morph on will divide the Power value by 8.

Secondly, you must either look up the actor's Lv and Att if the attack is Physical, or Magic Att if the Attack is Magical. Alternatively, search via Enemy Name or ID to find the Lv and Att/MAtt used. Hero Drinks will increase Att and MAtt by 30% and will stack up to a maximum of +100%.

Lastly, enter the target's Def if the attack is Physical, or MDef if Magical, or, you can search via Enemy Name or ID to find the Def/MDef values used. Hero Drinks increase Def and MDef by 30%, and Dragon Forces by 50%. Both will stack together, but will not exceed a total maximum of +100%.

Toggle the Elemental Attributes and Status modifiers to vary the damage output in a number of ways. If you want to activate the Weapon Modifiers, then make sure to be using a damage formula beginning with A (also known as AX; see the "Formula Info" section).

The last part of the calculator will work out the various hit chances. If you have selected an Attack/Actor/Target in the search fields above, then their relevant stats will be displayed here which can be then used to fill out the fields in green. Make sure that the "Attack Type" (Physical/Magical) and "Target" (Player/Enemy) are set correctly to see the relevant stats.

HUoAVDO.png


SHfGQtq.png


PeE32Gz.png
Database Section:
If you explore the "Enemy", "Item" or "Map" database sheets you will find hyperlinks to pictures of every Enemy, Item and Field Map. If you have downloaded the "Pictures" version, then the pics will be embedded within the notes for each cell; hover your mouse over the cells to bring up the pictures.

Generally speaking, you shouldn't need to mess around with the database section, unless you have the notion of using this database as a canvas for designing a new mod. In which case, only edit the cells highlighted in Green or Red (some cells will change colour from one to the other). If you do intend on modifying the Database, then it's worth hitting me up on my email, seeing as certain aspects have been designed in a way that isn't very self-explanatory.

The "Calculations" sheet is where all the background calculators and search engines do their thing. In honesty, It is a maze of formulas that is probably best to avoid, unless you're me :).

Credit to NFITC1 for the maths behind the Map Average Calculator.
Credit to Gurthawoe for help with the spreadsheet formulas.

Contact email - [email protected]
 
Last edited:

DynamixDJ

DynaGamer
AKA
Josh
Thanks for the positive responses, guys. I started this thing in April 2016, but then stopped working on it for an amount of time while going through an adjustment in careers. About a year ago I decided that it needed finishing at started work on it again.

@Shademp - I know you know your stuff, but to my knowledge, there are no differences between the PC version and the original release. I know there were dialogue changes (Kjata to Kujata, Typoon to Typhon etc.), but as far as I am aware, all of the Enemy Stats, Ai Scripts, Formation Data, Attack Data from the scene.bin and Encounter Data from the field scripts are identical in all version barring the JAP ORG version. Please, if I'm mistaken in thinking that, please correct me, it'll be valuable knowledge.

So, with the exception of a few spelling and description discrepancies, all of the core info in my database should be relevant for all versions,barring the JAP ORG, which by the way, I have no current intentions of integrating into a new version of the spreadsheet lol. It would be a fun task, mind, but one down the line if I am going to bother.

I'd be more interested in trying to make this sheet compatible with spreadsheet software that isn't Excel, which is easier said than done...
 

Ite

Save your valediction (she/her)
AKA
Ite
I am really getting into this document. Extremely well done overall. Every time I think to ask a question ("Where's this info? Can I search by this?") I just take a closer look and can find my answer with minimal searching. Most recently, I was on the page for the moth slasher and was thinking "What's the enemy that looks like this?" and just as I was thinking "Naw that's too thorough" I saw a column listing all the lookalikes for this creature, and sure enough, the creature I was thinking of (crazy saw) was right there, ID displayed and everything.

edit: I know the lookalikes function is written in op but I jumped right in to see how user-friendly the doc is (also cause I learn by doing). Happy to report that it's pretty easy just to jump in and explore.
 
Last edited:
Late reply over here :monster:

@DynamixDJ

Feedback: The Excel document reads...
Pictures have been taken from the FFVII JAP Original bonus disc
This might give the impression that the bonus disc came with the original Japanese release of Final Fantasy VII on January 31st, 1997. Of course the bonus disc first arrived with the Japanese re-release on October 2, 1997. This is the release that was titled "Final Fantasy VII International". I would rewrite the passage in the document to reflect this more clearly.

My own (admittedly odd-sounding) convention is to refer to the January 31st release as the JORG (Japanese Original) version. However it would also make sense to call it something like J1.0 and the International release J1.1.


You can read about some of the battle/enemy differences between J1.0 and J1.1 in my old version guide. The relevant information to this topic is spread out across these categories:
- Battle Interface & Materia Menu
- Enemy AI
- Encounter Data
- Glitches & Bugs

Some of these differences may show up clearly when researching the bytes in a hex editor, others may hold the same byte values but represent different things in that game version, while yet more aspects may not be relevant to the current version of the Enemy Database document.


Naturally most of the version differences will only be interesting as a curiosity and not be relevant inspiration for modders. Unless they for some reason want to reimplement the old version of Sephiroth's Supernova or make the Brain Pods super-frustrating to fight like they were in J1.0 :awesomonster:


Really happy to see that somebody documented things like the exact use of the WM0 - WM63 files. Might be because my google fu was poor but years ago when I was into researching the original FFVII it frustrated me that I couldn't find a list of which world map entrances each WM file represented. Thanks to your document this is presented clear as day!
 

DynamixDJ

DynaGamer
AKA
Josh
Thanks for the catch there. I have the JORG version on my comp, and when I acquired the Bonus disc (which I've just checked, is labelled "Final Fantasy VII International (Japan) (Disc 4)"), I just whacked it in the same folder as the JORG version, then forgot that it wasn't part of that release lol When I explored the disc, I could see that there was no Kalm Traveller, no entries for the INT-exclusive Weapons, no entry for Superball. I had a recollection that Diamond wasn't fightable in the JORG version, but I couldn't be certain. Regardless, I just slipped into thinking that I was working with a disc that came out with the original release lol.

Thanks for the clarification! I'm somewhat of a hoarder of knowledge when it comes to things like version differentiations, and your Comparisons page is getting bookmarked (right underneath the "Unused Fields of FFVII" page). I'm gonna be writing a comprehensive section of my walkthrough at some point which lists all the known variations between the releases. Most of the stuff in your guide I knew about, but I did not know about the Field Map background changes, that's super cool to know! The different Battle Ground used in Mt. Corel I also didn't know, although I knew about the different debug battle ground, and the swapped out test models used. I made a note of that in my Formations Charts.

The thing that I'm most interested in is the differences in the Enemy Module between the JORG release and the subsequent releases. For example, I know that a lot of Actions used by the Enemies in JORG use Hidden, and I'm not just talking about 0 Damage Status inflicting attacks ( of which there are roughly 12 in the later releases); I'm talking about attacks that you can defend from using Elemntal+Hidden. I think there were about 24 >0 Dam attacks that use hidden.

We know that the Enc rates were lower in JORG (or, technically, they were higher, which meant less frequent), and ofc the infamous #0001 Formation in Corel's Well, but it would be good to have a decisive list. I guess I could redesign my sheet for the JORG version, it would be a fun project for sure, and while it would take time, the real work was designing the sheet which is done. All I'd need to do is rebuild the Database section.....

I'm going to leave that one open for consideration for the future, but for now, I'm putting the sheet to its full use for the Enemies and Encounters section of my walkthrough, which I'm going full steam on at the minute. It's a really fun project tbf, one my DB was designed for :)
 

JBedford

Pro Adventurer
AKA
JBed
I manually compiled a list of the field encounter rates and the encounter differences for JORG here. From the top of my head, the only encounter differences I recall were the inclusion of Sector 8 fountain and Base of Gaea's Cliffs enemies, and then the infamous Test 0. Though the encounter rate differences were aplenty.

I should still have my program somewhere if you ever want me to dump enemy and attack information in any format you like. I don't know your method, but if you use Proud Clod then the JORG scene.bin is a little different in formatting (extra padding). I reconstructed a JORG scene.bin that works with Proud Clod, but the program has no support for Japanese text so it can get confusing.
 

DynamixDJ

DynaGamer
AKA
Josh
Nice one for that list JBed, I actually have your wiki page bookmarked, you've done some really great work there!

On a side note, who is responsible for writing the Enemy AI script for each enemy? The whole thing needs a once over. Terence Fergusson has improvised quite a lot and hasn't copied the AI script out exactly as it is; he's simplified quite a lot of it in a way that works, but then the Wiki has "simplified" the simplified version, and in doing so has inadvertently made mistakes/inconsistencies.

Take for example Turks:Reno, we see a death counter which will kill off any remaining Pyramids when Reno is killed. This set of vars which toggle an allies "Targetability" and "AI script disabled/enabled" is something I've seen numerous times (and I haven't left Midgar yet lol), such as the Hell House/Mighty Rgunt/Aero Combatant, and other enemies that have counterparts.

TF did not bother to mention this because these sets of vars because there was no need, however, he did mention this set of vars with the Warning Board+Machine Gun+Laser Cannon, and because of this the Wiki goes into a little bit of detail regarding this set of vars, but, for the sake of consistency I don't know why the wiki should mention it for the warning board but not the all the other enemies.

Like I said. whoever Dissected TF's work would benefit from dissecting the actual AI script, which I am currently working on enemy by enemy to map out all LocalVars and BattleVars, so that everything actually makes sense (like you see with my post on Reno). Once I've finished I'll upload each enemy to my Pastebin page, the main problem with that being the fact that Pastebin will arrange my uplaods by date, so I'd need to upload the LAST enemy FIRST lol.

Also, I'd absolutely love to obtain a JORG scene.bin that works with Proud Clod! That would be fantastic! PM me the link if you would :)
 

JBedford

Pro Adventurer
AKA
JBed
The wiki's VII AIs were all dumped from Terence's guide long ago by someone, and in an effort to not just be thieves (and to try make them more readable to the layman), some of Terence's work was interpreted and simplified by a user now long gone. Writing my own AI interpreter is something I've wanted to do but never really started to look at.

So I'm looking at my scene.bins and I don't know where it came from. I clearly made it, but I don't even remember being able to reconstruct a scene.bin file. The end result is the same filesize as the original JORG scene.bin which is the most confusing thing (not the same as the JINT filesize). But it works in PrC where the on-disc file didn't, and it's definitely correct. So whatever, I'll PM it.

I don't remember if I did a full assessment, but the JINT scene.bin is mostly the same as the English ones. Except that it adds the dev enemies back (albeit at different IDs, since they were overwritten by Emerald Weapon in the English versions).
 

DynamixDJ

DynaGamer
AKA
Josh
Awesomeness, that's super bad-ass, nice one JBed :)

BTW, whoever it was that deciphered TF's work hasn't done a bade job by any means, there is just room for improvement, Perhaps once I have finalised my with the AI script for each enemy we could then work together to make the wiki more directly relevant to the way the game is scripted, instead of relevant to the way TF dissected the scritping? It would be a fulfilling project, and, it would give me the chance to go over every enemy once more for the sake of perfection, so I'm definitely up for it if you are!

I'm just not very efficient with Wiki editing, and creating the IF nesting drop-down boxes that we see with some enemies would take me a long time to get right.

If anything, we could make AI script that transforms this:

Cripshay:

MAIN:

0x000 If (LocalVar:Count)
0x000 {
0x006 If ( (LocalVar:TargetSelected.BattleAddr(&DeathStatus) == 0) )
0x006 {
0x013 BattleAddr(&TargetSelected <- LocalVar:TargetSelected
0x01A }
0x01A Else
0x01A {
0x01D BattleAddr(&TargetSelected <- RandomBit(BattleAddr(&AnyPlayers))
0x025 Perform("Dual Spike"[013A], EnemyAttack)
0x02B LocalVar:Count <- 0
0x031 }
0x031 Else
0x031 {
0x034 BattleAddr(&TargetSelected <- RandomBit(BattleAddr(&AnyPlayers))
0x03C Perform("Scissors"[0139], EnemyAttack)
0x042SCRIPT END



PHYSICAL COUNTER:

0x000LocalVar:TargetSelected <- BattleAddr(&Self).BattleAddr(&LastPhysAttacker)
0x00BLocalVar:Count <- 1
0x011SCRIPT END


into this:

MAIN:

If (LocalVar Count = 1)
{
If ( (Target Selected - Death Status) == 0) )
{
(Target Selected = LocalVar Target Selected
}
Else
{
(Target Selected = Random (Any Player)
Perform "Dual Spike")
LocalVar Count = 0
}
Else
{
(Target Selected = Random (Any Player)
Perform "Scissors"
SCRIPT END



PHYSICAL COUNTER:

LocalVar Target Selected = Self - Last Physical Attacker
LocalVar Count = 1
SCRIPT END


TLS has not preserved the TAB spacing, but you get the jist.


OK, I appreciate that with the Cripshay there is very little difference with what I've done and what TF has done; I chose it because it was an easy enemy to show as an example. The point being, if we show the AI script as it is, it will show the use of many vars that TF has left out along the way, which would generally be better in my opinion. Plus, it would give the Wiki an edge over everything else out there that just copies TF's work blindly. He has made a few misteks also, small ones, but mistakes nonethe less (like denoting something a 1/4 chance when it is a 1/3 chance, etc.).

Also, TF did not work out all of the vars, Vargid Police's [2020] for example, is the Battle Type (2 = Back Attack), or H0512's [2120], which looks at the Element of the last action performed (although it does nothing with it).
 
Last edited:

DynamixDJ

DynaGamer
AKA
Josh
Version 1.1.0 released:

- Corrected a number of errors in Enemy stats
- Added a number of Attack Properties to the Enemy's Attacks in the Enemy look-up sheet
- Added Materia and Limit Break info to the Attack look-up sheet
- Added info on Field Script flags to the Map look-up sheet
- Changed the Formation chances on the Average Calculator sheet to show as a %.
- Fixed an error with the formula that searches for every Map in which a Formation can be found
- Fixed an error on the Map sheet whereby it would not display every Status used by the enemies
 

JBedford

Pro Adventurer
AKA
JBed
I'm just not very efficient with Wiki editing, and creating the IF nesting drop-down boxes that we see with some enemies would take me a long time to get right.
The wiki's AI doesn't have to use those nested dropdowns. Tirlititi, who works with FFIX (HadesWorkshop, etc.) donated AI scripts for the FFIX enemies. Example. It's a bit on the complicated side, and also isn't perfect because it doesn't distinguish between abilities with the same name. But we take what we can get. Also I assume he edited some of it manually for clarification since he added hover notes.

So I don't know what you're working on with the AI for your purposes. Are you just taking the PrC decompile text and manually modifying it and/or editing PrC's .dat file?

Also on another note, I lazily hacked together a secret Japanese text-supporting (only) version of ProudClod that should just work if you put in the same folder as the normal version -- it doesn't support the original JORG scene.bin but it supports my modified one and the JINT one. It displays the English attack names in the individual attack windows and the English enemy names in the stats window. It doesn't seem to work with AI strings though, and could have other problems because I basically just replaced PrC's text reader with my Japanese one, likely removing functions I didn't know about in the process.
 

DynamixDJ

DynaGamer
AKA
Josh
So I don't know what you're working on with the AI for your purposes. Are you just taking the PrC decompile text and manually modifying it and/or editing PrC's .dat file?
That's basically exactly what I'm doing. I'm copy&pasting the decompiled text, then allocating a text description to the battle vars using the find all + replace all feature. Here is where I'm at with the vars.

My idea was to do something similar to the AI script you see in the example, however, I would simplify it a little more, while retaining the complete script instead of jumbling things around and adding his own vars as TF did to explain certain weirdness. Also, I am creating a "Battle Plan" for each enemy which could also go in the wiki, check out my Enemy's and Encounters section of my guide which I'm currently plodding through. As mentioned, doing the work with the wikia will give a chance to once-over everything that I've done, which would be a necessary step for my guide.

Also, having the drop down boxes aren't necessary, especially for some of the simpler enemy's however, it can *really* help when trying to work out if the IFs have nested or ran sequentially. I can't often be 100% sure if an enemy will skip a turn or move onto the next attack (take the Motor Ball as an example, I have to test with a stopwatch counting the amount of time it takes for him to use his turn lol, he *does* skip a turn on his 4th attack). The drop down boxes will help clarify that.

Also, there are a few errors I've noticed with the Wiki. I can't remember off the top of my head all of them, but I remember the stats for [No Name] in the Rufus battle being wrong. Trying to update the wiki *and* compile my Enemy's & Encounters FAQ is biting off more than I can chew, which is why I'm suggesting to do it as an after-project.

Do use use Discord Jbed? We could to-and-throw more easily there I feel. Also, word up for that Pr Cl tool, I probably won't be using it in the near future, but having the JORG scene.bin handy like this I know will be a big help in the future. Thanks!

Lastly, I asked a question on my topic on qhuimm regarding attacks that use Split Damage. I thought it was hardcoded into the attack formula itself, but no, apparently Matra Magic and Motor Ball's Rolling Fire (which both use formula 22) do not have split damage. I'm sure there are more attacks that should have Split Dam but do not; I'm finding them as I error check my work against TF's.

I'm sure there must be a flag somewhere which overrides the split damage, I just don't know where to look. I'm guessing it'll be in the same location as a few other flags I'm not sure on, such as the visibility of an attack name, whether an attack is coverable, the attack chosen as the Berserk attack etc.
 

DynamixDJ

DynaGamer
AKA
Josh
OOh, I know what I desperately need if anyone has it?

I have a save folder with a fresh save every step of the way, the only problem with this save file is the fact that I became op by grinding it out in certain places from Junon onwards. I was Lv 46 by the time I got to Jenova-Life lol. If anyone has a set of save files where they are normally levelled, that would be a massive help!

I'm calculating the damage output for various attacks using my character's stats on that set of save files, and I'm about to hit Junon. Otherwise, I'll just have to do a mega-quick run through on ePSXe with the framerate toggled, which I might do anyway seeing as I still need to test for the visibility of each attack name, seeing as TF got it wrong on a few occasions (and I don't know where to look myself for that flag)
 

DynamixDJ

DynaGamer
AKA
Josh
Here is the script that I would propose for the 1st Ray (there are no tab spacings for that script):

MAIN:

If (LocalVar:Count = 0)
{
(TarSelected) = Random ((AnyPlayers) | (HighestCurrentHP))
Perform("Laser Cannon")
LocalVar:Count = 1
}
Else
{
LocalVar:Count = 0
SCRIPT END


/----------------------------------------------------------------------------\
| BATTLE PLAN: (Repeats) |
| |
| 1st Attack: Use <Laser Cannon> on Rnd Target with Highest HP |
| 2nd Attack: Skip a turn |
\----------------------------------------------------------------------------/
(pretend the spacing has worked here ^^)

Again, hardly any difference between this and what's already on the wikia; this is just an example of the format. It can be worked on/changed to simplify it if needs be; point being is it is (almost) identical to the raw dissasembled ai script i.e. no need to declare count as 0 at the start of battle, as that doesn't exist; TF added that to avoid confusion (but logic suggests count to be 0 by default at the start of a battle, along with all other localvars). The simplified "Battle Plan" clears up any questions the reader may have about the script.
 
Last edited:

JBedford

Pro Adventurer
AKA
JBed
Visibility of attack name is based on the animation script. There's a command in the animation script (0xEA) that indicates when to display the ability name. My FFVII enemy data dumper checks this, and so the italicised abilities in the infobox on the wiki mark ones not displayed in-game. Also I didn't think the wiki even had articles for those unnamed enemies.

I can have dropdown boxes be set-up automatically from the code. But I would think curly braces and/or indents would make run order just as clear.

I have thoughts about the battle script but FFVII battle scripts and bytecode in general isn't territory I've been down so I'll need to look into it. I don't use Discord or any other IM.
 

DynamixDJ

DynaGamer
AKA
Josh
Thanks, I've found the wiki page that explains the animation script, but I still don't know exactly how I can view the animation script for each action. Is there a tool I could use? If not, I don't mind looking at hex, I just don't know where to look. Also, any idea what indicates an Attack as non-coverable, and the Attack used as a Berserk Attack?

For 60% of the Enemies, yes, braces will do fine. In honesty, when I started deciphering the script for my project a month ago, I just used TF's script, I didn't bother looking at Prc Cl. It wasn't until I got to the ELigor that I realised that TF had simplified it in his own way, and I could only make sense of it all once I looked at the raw script in Pr Cld. It was at that point that I decided to go back through each enemy, which I'm glad I did, because I had deciphered TF's work incorrectly on occasion.

So anyway, the Eligor would be a good place to start, but this project would eat up quite a lot of topic space, and is probably best for IMs? Or at the very least we could start a new topic. In honesty though, Discord would really help for something like this if you'd be prepared to sign up?
 

JBedford

Pro Adventurer
AKA
JBed
With PrC you can see which enemy is linked with which model in the Enemy Stats tab, and in the Animations/Formations in PrC you can see which ability is linked with which animation script. The battle.lgp basically uses a base-26 scheme (AA=0, AZ=25, BA=26), so Eligor's model ID of 0x28/40 means that his files are the BO** files. The scripts file is the **AB file.

The list of script offsets start at offset 0x68 in the animation script file. So the four-bytes at offset 0x68 are for script ID 0, 0x6C is for ID 1, 0x74 is ID 3, 0x78 is ID 4, etc.

At offset 0x74 in BOAB is F4 00 00 00. At offset 0x000000F4 in BOAB is the script for ID 3 (for Sword Attack). It does not contain the opcode 0xEA so you do not see the ability name.

At offset 0x78 in BOAB is 08 01 00 00. At offset 0x00000108 in BOAB is the script for ID 4 (for Mono Laser). It does contain the opcode 0xEA so you do see the ability name.

My program didn't decipher the scripts properly and just searched for the byte 0xEA within, so it's possible it flagged some false positives.

---

RE: Berserk attacks. The ability in the first Manipulate ability slot is the Berserk attack. There are a number of enemies who have no set attack and are not immune to Berserk, so they try to use a 65535 MP cost ability (the last in the scene's ability list) and fail to do so.

No idea about covering. I believe opcode 0xF7 in the animation script handles the animation (among other things), but that doesn't determine whether the effect of Cover triggers or not.

---

I don't mind private messages, but not instant messengers like Discord because I like to be able to look at things and respond to things in my own time.
 
Last edited:

DynamixDJ

DynaGamer
AKA
Josh
Thanks for that. That clears up the question in regards to the Berserk Attack thing, I've been wondering that for ages lol :)

I've had a look into the battle.lgp, and I've found the addresses as described, thanks a lot for that. Fwiw, I think doing it the hex editning way may leave me prone to error. I'm not sure if it would be more accurate (and possibly even quicker) just to test out each Enemy using save states and framerate toggles. I'll come back to this one at a later date.

Anyway, I suggest that if we are going to go ahead with this project that we take it to PMs on qhimm, reason being that quimm will preserve the tab spacing when C+Ping chunks of script.. As mentioned though, it will be an after project once I've finished the Encounters section of my guide, so I won't be starting it for a few months, but in the meantime I will start compiling a list of errors and inconsistencies that I find with the wikia (kind of wish I'd already started doing that tbf).

Just a small observation that I've made with the enemy that I'm working on now, the Levrkon - the [2020] var is the "Battle Type"; 0=normal battle; 1=Pre-Emp Strike; 2=Back Attack etc. With the Levrikon, the check is to see if the battle type is 2, so a Back Attack.

One other observation I made, the drop and steal rates are slightly wrong. The drop rates are fixed, and not dependant on Actor/Target's Lv, but the drop rate is (x+1)/64, as ooposed to x/64 as the Wikia has described, so a drop rate of 8 is actually 14.09%, not 12.5%. A drop rate of [32] is 33/64 or 51.62%.
The Steal rates obviously can't be determined, but, I have been working out the chances of stealing based on Cloud being Lv 12 @ Sewers, Lv 13 @ Shinra HQ; Lv 14 @ Hojo's Lab; Lv 15 @ Midgar Area, and consistently the chances of stealing an item with a rate of [8] is 10.94% or 7/64 (which means the new drop rate is [6]), and a rate of [32] is 45.31% or 29/64 (which means the new drop rate is [28]). Sometimes that figure will change by 1/64 either way depending on the Enemy's Lv, but it's still a good approximation as to the chances of stealing.
 
Last edited:

DynamixDJ

DynaGamer
AKA
Josh
Hoy crap! I'm impressed! You've already changed the item drop and steal chances for all 300+ enemies. Fair play :)

One thing though, you overlooked the compounding chance the 1st drop has on the 2nd.

Take the Ark Dragon, who has a 9/64 chance of dropping the Phoenix Down. If this chance fails, then it moves onto the remaining 3/64 chance for the Ether. This means there is only a 55/64 chance the 3/64 chance for the Ether will occur, which means the *true* chances of the 2nd drop fot eh Ether is actually 4.0283% (165/4096).

:)
 
Last edited:

Ite

Save your valediction (she/her)
AKA
Ite
I’ve found an error! @DynamixDJ

So, this should speak to both the godlike accuracy of this database and also my concerning obsession with FF7, that I was able to scrutinize every enemy up to Wutai without finding an error.

Error: In the Thunderbird entry, it says that Lightning does “Double” damage to the creature when it should say “Absorb.”

That’s it, that’s the only error I’ve found so far. I commend you again! Hope this helped :)
 
Top Bottom