Author Topic: [PSX/PC] Battle editor - Proud Clod (1.5.0/FINAL)  (Read 415673 times)

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Proud Clod is now online and prepared for battle. All new updates to Proud Clod will come here.

ProudClod 1.5.0 is FINAL!!
Mediafire mirror (out of date): Mediafire binary
Source: Mediafire source

Updated some stuff based on some bug reports with the previous version:

Fixed the problem with the item drop/steal thing not working due to lack of handling of "NOTHING" slot.

Now you can import item names from your KERNEL.BIN/kernel2.bin for display in the steal/item drop/morph boxes.
Added the status effect bits to the "element modifiers" section. I'm not sure if they are all valid values, but it might be interesting to see if you could "full heal" from sadness or something. Someone try these out!

Scene Data Management:
Animations/Formations: That oddly-placed button was moved to a menu item here. functions mostly the same as before.
Dump Scene(s): This is the way to obsolete SceneReader. This can dump an individual scene for byte-wise manipulation.
Load Scene(s): Of course, Dump Scene(s) would be worthless without this function too. This will load a scene or 256 scenes in their raw format for manipulation/recompilation later.

Enemy Management:
Edit Enemy AI: [See Animations/Formations above]
Edit Enemy Stats: ProudClod now has the ability to modify enemy stats thereby making Hojo completely obsoleted.
Could be a bit buggy though. I didn't test it completely. Some things might not save correctly. Let me know if it doesn't. Model ID has been moved from the Animations/Formations window to this one.
Copy/Paste enemy: You can copy a single enemy to place in a different scene in a new place. Paste won't show up if you have an enemy copied, and you can paste multiple times. It SHOULD copy needed attacks as well. I don't remember if I got this working completely correctly either.
Sync enemy: This will search all the scenes looking for any enemy that shares a Model ID with the enemy you select. Once it finds it, it will re-write THAT enemy to be like the one in the scene you currently have selected. Handy for changing enemies in different scenes.

Requires:
Microsoft .NET Framework 3.5 or higher
DirectX 9.0c (or higher?)

*new* Blog.

Optional:
Included .dat file (ProudClod.dat). This file contains all the display characters and battle script addresses and their values. If you decide to change the character set, update this file. If this file is not present in the same directory as ProudClod.exe, then PrC will use the standard FFVII display characters. Also, disassembly will not display functions of known address values. If you discover the function of an unknown value, add it to the bottom of the file (or anywhere after the first 256 lines) in the same format as the rest of the addresses:
<4-digit hex address>|<function>
and it will show up during disassembly of the AI.

Images: (Modeled after WM and I'm too lazy to make new pics so this will do for now)
Main: (Identical in structure to the contents of WM's attack tab, but with a few differences)
Character AI: http://img34.imageshack.us/img34/1860/charaibetter.png
Enemy Animation: http://img3.imageshack.us/img3/9191/anims.png
Raw Formation Data: http://img200.imageshack.us/img200/2137/formation.png

Features:
This program started out as an Enemy Attack editor. You could change the names of certain enemy attacks as well as their effects, strength, MP cost, element, status infliction, etc. It can still do that, but it has been since upgraded to allow you to edit the enemies' AI themselves! It is mostly modeled after my previous program WallMarket which allows you to edit almost every byte of the KERNEL.BIN file that contains battle information relevant to the playable characters.
Several Searches have been added
  • Search for Monster by name has been around for a while
  • Search for Attack by Index
  • Search for Attack by name
  • Search for Unused Attack Indexes if you want to add a new attack
Several attack-related functions have been added
  • Copy/Paste/Delete an attack between scenes or as a base for a new attack!
  • Synchronize all attacks with a specific Attack ID within the entire collection of scenes (useful for things like E.Skills or if you have the same monster in multiple scenes)
  • Statuses and Elements can be filled or cleared if you right click in the blank spaces between them.
AI Editing-related changes:
  • Copy/Paste scripts (whole or partial) from one to another (still mostly experimental, but I think it'll work)
  • Displaying strings is now easier that before. Just type the characters rather than translating to ff7 character codes (don't forget to add a hex value at the beginning if you're using code A0
  • Edit window is now sizable! You can see more script if you want.
  • Strings now can be edited and saved correctly *new*
Animation-related changes:
  • Format has changed. Only one monster at a time is displayed. Should speed loading of the form up.
  • "Action camera override" are editable beside attack animation
  • Enemy ID are editable
  • Manipulate attacks are selectable
  • Issues with renamed attacks *should* be resolved.
You can also edit the raw formation data in each scene! Much of it is already known, but there's a little bit left (escape flags).
Formation Data changes:
  • Graphical Interface allows you to change anything about formation positions.
  • won't load models or backgrounds yet. Not sure if I'll make it do that.
Data dumping:
For now, you can dump six things. I'll add more if someone requests it.
  • Setup Data
  • Camera Data
  • Formation Data
  • Enemy Names with IDs
  • Attack Animations per enemy per scene
  • Raw attack data per scene
  • List of attack names by index. They really are unique!
Change saving!
  • Changes made to scenes (anywhere) are savable to a file that can be opened by another user in their scene using PrC!
  • This includes changes made by Hojo!
Helpfile documentaion!
Be sure to check out the addendum to opcode 93h.

I'm probably leaving out a few things and I'm sure bugs will surface, but it should be more friendly now.

Controls
Q: ...the heck? Controls?! What do I need controls for?

A: Since you asked so nicely *grumble,grumble* I'll tell ya'. The new formation editor needs some explaining.
First of all, it will look like it will in the game. Well, minus the models and backgrounds. It will have cubes to represent these now. There's silver ones for the enemies' and gold ones for the characters' positions. On top of this, there's a gray "ground" that represents the battle floor. There are also axis lines along all the major axises.
Green = positive x
yellow = negative x
red = positive y
magenta = negative y (for some reason, these are reverse when it comes to coordinates)
blue = positive z
cyan = negative z
Get it? Positive = RGB; Negative = CYMK
To rotate the camera around the viewing center, click and hold down the left mouse button on the field and move it.
To rotate the center around the camera, hold shift while performing the same action.
To pan around, hold down control and the left mouse button and move the mouse.
To gain altitude, hold down Shift+Ctrl+Left mouse button and move up or down.
To save the camera position, right-click on the position label which is on top of the FFVII battle menu and tell it to save.
That's all for the movement of the camera, now we can also move the enemys.
To select an enemy, click on it's position label. When it turns blue you can hold down the right mouse button to move it around the gray field. Right-click on its label to align, center, or save its position.
That should be everything.
Keep in mind, however, that the drawing order is not true. The gold cubes will always overlay the silver ones even if the silver is closer to the camera. I'm not sure how to fix this. I'm working on it.
Also of note is that each cube is two "units" in size and there is currently no way to know that one is overlaying another. Most units are larger than 8 cubic units anyway. A Battery Cap, can "sit" on one square unit and be surrounded by others and not contact another one, but it's probably the only one that can and it's REALLY close to the others when it is. Moral: Leave some space between them.

Now it is able to edit what attacks an enemy can perform! There are two options. One will be which attack it can perform, and the second will be its animation while performing that action. Only a few actions per character are used, but play around with them. Typically, 0-2 are idle, damage, and death and from 3 on are attack animations.
Now you can find the enemy you're looking for even easier! The search button to the right of the scenes will allow you to look for the name of a monster. It is case insensitive and you just have to give it part of the name! If only one scene contains that enemy it will jump to it. Otherwise, it will give you a list of scenes it is in.

Notes:
  • Most information is known, but not all. If you have any information on unknown values please let me know by replying to this or PMing me. Also keep in mind that I intend to continue updating this with relevant information so this is not the final version.
  • Also keep in mind that I intend to continue updating this with relevant information so this is not the final version.
    zlib1.dll needs to be in the same directory as PrC or in the WINDOWS\system32 directory. If you get an error during scene.bin creation saying it can't find zlib1.dll, put it in the same directory as PrC.
  • Currently does not come with a readme of any kind. Use WM's readme for opcode description until I make a PrC one.
  • To delete scripts, highlight the script section ("Pre-Battle", "Main", etc) and press the Delete key on the keyboard.
  • This thing is probably pretty buggy, but I didn't do a very exhaustive test of what it can and can't modify. If something doesn't work, let me know.
  • For questions about animations indexes, read this thread first.
« Last Edit: 2018-04-24 18:17:55 by Covarr »

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0-1.4 Topic
« Reply #1 on: 2009-05-28 14:10:04 »
I think I was a big part of the proud clod related clutter :evil:. sorry i posted again in it, but i must have started posting when you put your post...

at least some of my ideas are catching peoples' eye... now if i keep it up i will be able to eventually have a nice hack to play :-P

edit: damn... changing it's invisible flag didn't work, neither did it's dead unit flag (unsure of which of the two if either are activated when killed... know little of the death sequence), so i have to retype it into the post-attack thing.

edit2: nope... forgot that death happens before all but the death counter >_> have to try some other things to prevent invisibility
« Last Edit: 2010-06-09 13:25:38 by obesebear »

Fleet Command

  • *
  • Posts: 135
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #2 on: 2009-05-28 14:37:20 »
Nice work.

By the way, what does Proud Clod means? I never get to understand it properly, especially in regard to that big robot in FF7. Does it mean the same thing that I understand from it the way I do from other phrases like Suspicious Cat or Glorious Half-lit Shadow?

Kudistos Megistos

  • Banned
  • *
  • Posts: 3929
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #3 on: 2009-05-28 14:38:36 »
Quote from: secondadvent
thanks... i didn't know that my ideas were this good. if it helps, that is great, since the more ideas that are out there, the better the hacks can become evil. if you want to see some of my code as an example tell me and i will put some up here for reference.

I wouldn't mind seeing the code for "counter by causing status ailments" and "counter when a certain amount of damage is done"  :wink:

Actually, it could be a good idea to gather together "templates" for things people might want to do with AI editors, so that people can copy the code and only worry about which attacks/status changes/etc to use.
« Last Edit: 2009-05-28 14:41:27 by Kudistos Megistos »

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #4 on: 2009-05-28 14:44:52 »
alright, i will have them up shortly, just another test i want to do first :-P

here is the damage absorption code (note in my original i used 12/02 for the variables which dealt with hp, and that is probably a bad thing :evil:... i'm glad i caught that little mistake)
Code: [Select]
pre-battle:
13  0000 // 0000 <- self hp/max hp
02  2060
03  4160/4180 (either works)
80
90
13  0020
60  00
90
12  0040
60  00
90

sets up the needed variables - 0000 is "previous hp" or the hp that the enemy had before the last attack, 0020 is "current hp" to make later parts smaller (less times needed to figure out the current hp), and 0040 is "damage taken"

general counter:
13  0020 // current hp <- self hp
02  2060
03  4160
80
90
03  0020 // if current hp < previous hp
03  0000
45
70  XXXX (end of script jump)
13  0040 // damage taken <- previous hp minus current hp
03  0000
03  0020
31
90
13  0020 // current hp <- damage taken/2 + current hp (gives back half of the damage taken)
03  0040
60  02
33
03  0020
30
90
12  2060 // self hp <- current hp
13  4160
80
03  0020
90
13  0000 // previous hp <- current hp
03  0020
90
73

this code makes the enemy absorb 50% damage taken, and unlike resisting half of the attack, this WILL kill the enemy if you do more damage normally with one attack (i.e if the enemy had 10 hp left, you deal 10, it dies, while if it had 50% resist,
it would be alive with 5), and you can still add resistance onto this. of course there are different things you can do with this as well, this is just an example.

hopefully i didn't forget anything in the transition form PrC to here... also the amount healed isn't shown, so it gives the illusion that the enemy has more life than it actually has, while reducing damage has a visual representation... a sneaky way to make something seem stronger than it actually is, and makes knowing the actual life (without sense available, or actually looking at the hex, or with an editor) hard to know for sure. in essence it makes the enemy live longer if you aren't hitting it very hard (compared to max hp) by restoring more hp over time, especially with healing abilities as an aid, and live much lesser (still more than max hp if it can survive some hits) if you are dealing more damage.

now the physical status ailment counter is pretty simple:
Code: [Select]
physical counter:
81 // if random (xx) = 0 (actually if random (xx) is not true, but same thing >_>)
60  XX (whatever random chance you want)
34
52
70  XXXX (jumps to the end if not true)
12  40d0 // previous attacker poison <- true
10  4003
80
60  01
90
73

pretty simplistic, but it does give the attacker poison (or whatever other status), but i did notice that with poison, the visual glowing green effect doesn't show up until you are attacked, but the poison still hurts you, so it is just a minor bug
« Last Edit: 2009-05-28 15:34:47 by secondadvent »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #5 on: 2009-05-28 15:15:04 »
I was thinking that you could have a blank enemy casting something like Angel Whisper on the dead ally in it's post-attack script. That would require adding another enemy in a hex editor, however.

Also, you could have the dead/dying enemy cast a life-giving attack to itself. If you just unset its death status, I don't know if the targeting info (Active allies/enemies) will be correct after that.

As far as copy/paste goes. I don't know how best to do that without screwing a lot of stuff up. I'll play with the idea, but don't count on it happening soon.

Nice work.

By the way, what does Proud Clod means? I never get to understand it properly, especially in regard to that big robot in FF7. Does it mean the same thing that I understand from it the way I do from other phrases like Suspicious Cat or Glorious Half-lit Shadow?

Proud Clod doesn't mean anything. There's just this tradition (at least in the FF modding community that meets here) to name tools after objects/locale after something in the game it modifies. I just chose Proud Clod because it WAS Heidegger and got upgraded to something more powerful. Seemed to make sense.


I wouldn't mind seeing the code for "counter by causing status ailments" and "counter when a certain amount of damage is done"  :wink:

"Counter by causing status ailments": (a theory)
in the General-Counter script:
Code: [Select]
12  0000
02  2060
02  40D0   PreviousGeneralAttacker
80
90
12  0000
10  40XX (where XX is between 00-1F depending on the status you want to inflict)
80
60  01
90
73

"counter when a certain amount of damage is done" is in WM's readme file:
Code: [Select]
0x000   02 2060
0x003   03 4160
0x006   80
0x007   61 012C    (this is if HP is below 300)
0x00A   45
0x00B   70 001F
0x00E   12 2070
0x011   02 2060
0x014   02 40D0
0x017   80
0x018   90
0x019   60 20
0x01B   61 YYYY  the attack index
0x01E   92
0x01F   73

Actually, it could be a good idea to gather together "templates" for things people might want to do with AI editors, so that people can copy the code and only worry about which attacks/status changes/etc to use.

I'd like to create either a branch of these forums dedicated to AI scripting, or create my own forum. But as I don't have the ability to do the first or the knowledge on the second, it'll probably be confined here.
« Last Edit: 2009-05-28 15:46:43 by NFITC1 »

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #6 on: 2009-05-28 15:21:08 »
thing is, i can do that for the first mp's, since there is a free slot, but for other scenes i'd not be able to, especially since they cannot cast life without adding animations capable of using spells, and i do not know how to do that directly. now i could try to make an idle animation attack called life, and see if that works, if the idle animation can be used for an attack. otherwise i'd have to make it rez itself with it's tonfa or gun, which is really weird... idle animation would be the best though, but i am unsure if it works as i said... no harm in not trying though.

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #7 on: 2009-05-28 15:29:02 »
[....] otherwise i'd have to make it rez itself with it's tonfa or gun, which is really weird... idle animation would be the best though, but i am unsure if it works as i said... no harm in not trying though.

Yeah, you'll have to settle for weird animations. A non-moving spell casting animation would be best. I don't see anything wrong with it, but the camera will make it look a bit strange.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #8 on: 2009-05-28 15:39:30 »
heh... i didn't even see them in the readme, but then again i have only been looking at it occasionally for a little bit of help. i came up with these on my own based off of normal programming capabilities (i think of something in, say C++ form, and then just translate it to hex as best as possible), as well as some random ideas that just happened to pop up at the time (heat of the moment discoveries :evil:).

all of this hacking is nice experience though... especially since i am going to devry for game programming... only my first year though :-P.

ok, i did make an MP kill itself with a fire spell using it's hurt animation (the idle one didn't work, and i think this way is funny), with no numbers showing damage, which is good, because it can cast life then and auto rez itself without showing more than it being hurt... still kinda weird, but i can't complain i guess.

edit: the casting of life on itself did not bring it back... it still died, and wasn't even alive but invisible this time... the closest i can apparently get right now is alive but invisible, though attackable. any other ideas on how to make them not use the death animation?

heh... i reverted back to the self death <- 0 counter, and was fooling around with the resizing (4098) script, and noticed that when my 12 foot tall MP's were killed and "invisi-rezzed" their size reverted back to normal (could tell by the location of the bullet fire and dust caused by their feet during tonfa attack). i am really starting to wonder what could turn off the death anim. at least for the first time (i am unsure if an enemy is brought back to life if it'd keep the variable's contents or start out fresh, because if it retained them, then that could be a very good thing... an enemy brings back a friend and the friend's ai changes into pissed-off mode), since so much is likely still unknown. i will have to take a look at hojo's sample monster later, sicne it uses reanimagic on it's allies... i could easily test to see if their variables are retained and possibly find the meaning of the main specimen's variables, since they could be useful things. but that will have to wait since i am pretty tired :-P.
« Last Edit: 2009-05-28 16:40:49 by secondadvent »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #9 on: 2009-05-28 16:52:40 »
edit: the casting of life on itself did not bring it back... it still died, and wasn't even alive but invisible this time... the closest i can apparently get right now is alive but invisible, though attackable. any other ideas on how to make them not use the death animation?

Not a clue, as it doesn't officially "die" until its death animation is complete. It appears that it is not dead, or even flagged as such, until AFTER its death counter script activates (based on the observation that it is still targetable while performing this counter). Except that the firing of this script implies that whatever the outcome, this character will die. This isn't the way it works for Playable characters, however, as we all know that Final-Attack/Phoenix-Revive works to raise the character again. The Death Counter script doesn't appear to work this way, unfortunately.
This makes me wish there was a Re-Raise option.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #10 on: 2009-05-28 18:02:57 »
actually, it has to be flagged as dead since i can use self death <- 00 to make it alive, along with the help of self hp <- max hp to heal it, though the death animation plays afterward. using life did not do this for whatever reason, and i know i plugged it in right, since i copy/pasted the life data over the working fire data, and just switched the pointers and name (including within the script... woulda froze if i didn't) in the enemy data. the death animation is the only thing screwing me over.... if i could stop it, or figure out how to make the enemy appear again, things would be nice. an enemy unable to rez itself in angry mode would require a whole new formation, and that can be bad if the scene is already full, and would waste space adding the same enemy to a new scene just for one fight.

and if i remember correctly for final attack (been a while since i used it) the character actually dies right after using it, allowing for them to be able to be brought back to life, while in the enemy's case, the enemy is gone once dead, because other enemies cannot target them unless stored in their ai prior to their deaths (i think). the disappearing act is the only real problem, maybe whatever sephy (safer) uses for his disintegrating could be somehow used to stop the regular death animation? just a guess, and there has to be a way to keep the character there once dead, or he'd have a normal death animation. bosses also have a special (slightly altered) death sequence, how is that caused? whatever is able to do this should be able to stop disappearing after death (and hopefully be a flag so it can be turned back on after rezzing).

safer's ai is a big mess of stuff though, and i have little idea on what is happening during his post battle sequence... but the answer may lie there (what is the opcode 20 anyway? and what is with the FF opcode? there is a 9b in there too :-P)

a quick question, guard scorpion makes its mdef 384 when it's tail raises up, does it actually make it that high or does the mdef overflow instead? i know that the actual stat cannot go over 255 in the enemy's data in the scene, but if you could make stats go over their max in the ai, that would be pretty fun :-P. just want to know for later when i reach his ai.

edit: ok i just tested him myself (made him appear after the mp fight :-P) and i did ~85 damage normally, and ~35 when he boosted his mdef (counter stance), so it does apparantly break the normal limits. this is good to know :evil:.

edit2: ok i think i am going to lay off of a lot of the editing i am doing now (learning how to do specific things for difficulty changing) and just redo every enemy's ai to be as compressed as i can make it while still doing the same (or as close as possible) thing, so that more room is available, and the scene file becomes smaller (allowing for more room to play with and still be able to insert it into a psx iso at some point, because i like having save states... they make testing SO much easier). once this is done i will continue to edit enemy stats for a more balanced hard difficulty (instead of having enemies just shoot up in power, i will raise levels, speed and such, as a sort of alpha version until i get animation editing to add much more to the game... of course i may still add some moves to enemies that can use them without freezing or animating wrong), which shouldn't take as long unless i add more script from there (likely).

so phase one of my mod is ai compression, phase two much harder difficulty in a balanced nature, phase three massive ai overhaul. doesn't sound too bad, and if anybody wants to test out the reduced ai size scene file, i will gladly up it somewhere and put the link here (or email it to those who want to try it/use it for further modding), since it should definitely be a big help to psx version hackers. it will be based off of a clean scene.bin, so enemies should have no other changes aside from simplified ai, so it should act just like a normal scene.bin ai wise (will probably fix ai errors, such as with the cactuars, and adamantaimai's cure bug, but it would need a change in the hex, no sweat there). the ai will NOT be 100% alike with the normal one, but I will make enemies do essentially the same thing, removing unnecessary parts and allowing bugged things to work, and i will be testing every enemy until they work as desired, so this will take time but should pay off in the end.

of course when i finish each stage of my mod, i will send it out for beta testing for suggestions and such, to hopefully make things better, but i know that there are other mods already out, so i wouldn't be surprised if nobody wants to test mine :evil:. hopefully i can still get help when i need it with ai stuff here, as well as future PrC releases (yes, if you can play with copy/pasting, that would be great! if you can't make it happen without screwing things up, that is fine, but i don't really see why it would cause problems... all it would have to do is emulate someone actually typing in the info.).

i noticed that safer sephy's post battle script has two 73 opcodes and multiple FF as well... is his script screwed up in PrC or is it actually like that? oh and don't worry, i will move all of my mod related stuff to another thread as soon as i make some progress so i don't hog up yours :-P. i will be here a good bit though when i have suggestions/questions, and that will probably be pretty frequently until i begin to understand more about the ai.
« Last Edit: 2009-05-29 05:13:53 by secondadvent »

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #11 on: 2009-05-29 05:43:13 »
last post was getting pretty big >_>.

ok, is it safe to assume that formations 0000-001f, 03b8-03bf, and 03dc-3e7 are able to be removed, as well as all enemies associated with them, for more room/lesser overall scene.bin size? this is based off of the battle formations found at http://viper.shadowflareindustries.com/index.php?doc=ff7enemieshtml, which seem to be correct. with that much able to be removed, the size of the scene should greatly decrease and allow for much more formations/enemies to be created. not that it is hard to overwrite them... just replace their scene files with an empty one like scene 5 :-P.

edit: copied scene 5 over the following scene files:
1-8, 239-240, 248-250

new scene.bin size - 256 kb

the scenes erased should not have been used anywhere in the game (possibly others, but these seemed to stand out the most, based on the locations and enemy formations), and already shrinkage has been gotten. my future compressed version should definitely be worth the wait/effort then, at least to me :-P

ok, new idea for PrC... make it able to open files that aren't named scene.bin, for people who use multiple scene copies while hacking (like me), so that moving/renaming isn't needed >_>. and if you can implement the copy/paste feature, allow it to be used across PrC instances (for when more than one are running for comparison), maybe by saving to a temp file used by all PrC instances or something similar. that way when taking something from one enemy in one instance, it can be copied to another enemy in the other instance (like copying the MP's ai to other MP enemies, or using the same template for a different enemy)... kind of a time saver so you don't have to move between a ton of different scene files to paste something in.

... typing MP's ai in four times, and guard hound's five times is SO much fun :-P
« Last Edit: 2009-05-29 10:42:28 by secondadvent »

Fleet Command

  • *
  • Posts: 135
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #12 on: 2009-05-29 10:47:21 »
I was thinking that you could have a blank enemy casting something like Angel Whisper on the dead ally in it's post-attack script. That would require adding another enemy in a hex editor, however.

Also, you could have the dead/dying enemy cast a life-giving attack to itself. If you just unset its death status, I don't know if the targeting info (Active allies/enemies) will be correct after that.
So, are dead enemies not deleted from combat scene's memory buffer upon death? Interesting! Because I was thinking about something like Capsule which Hojo executes in combat, although this one involves expanding the buffer and if removing from buffer is impossible then adding to it likely to be out of question.
Nice work.

By the way, what does Proud Clod means? I never get to understand it properly, especially in regard to that big robot in FF7. Does it mean the same thing that I understand from it the way I do from other phrases like Suspicious Cat or Glorious Half-lit Shadow?
Proud Clod doesn't mean anything. There's just this tradition (at least in the FF modding community that meets here) to name tools after objects/locale after something in the game it modifies. I just chose Proud Clod because it WAS Heidegger and got upgraded to something more powerful. Seemed to make sense.
Yes, I know about the tradition. I was asking about "Proud Clod" in the game.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #13 on: 2009-05-29 11:16:33 »
i'm guessing that proud clod is called that because it is a revered (maybe) piece of shinra technology (shinra technology at it's finest :-P) that they are proud to have. or it is a very proud armor... but unless the armor has a mind of it's own, i don't agree with that, because otherwise heidegger would have to be the proud one >_>. kinda like someone naming palmer "the smart one" :evil:. or it is another bad translation...

Fleet Command

  • *
  • Posts: 135
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #14 on: 2009-05-29 11:43:01 »
But how do you perceive reverence or quality from "clod"?

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #15 on: 2009-05-29 12:37:36 »
clod is (im guessing) like a big metallic thing, like an iron giant, or really big robot. it could be a misinterpretation of clad, which is what i am thinking, since there are iron clad enemies in some games, and they are all big metal enemies (like iron giants). so i am guessing proud clod means -> proud (prideful... shinra takes pride in their greatest pieces of technology) clod (iron giant/big robotic thing)... put them together and you get an iron giant/big robot that shinra takes pride in. i am just completely guessing at clod though... could be anything, but is likely what i think it is.

on another note, has anybody experienced their config file for ffvii suddenly disappear/not work before (the one for control settings)? mine just randomly stopped working when i ran ffvii, and i ended up hard rebooting, finding out when i tried after turning it back on that the numpad worked (i ctrl+q'd and got stuck there >_>). i did have hojo, two proud clods, and scene reader running, and had my computer on for a few days, so maybe that had something to do with it :evil:. otherwise one of them (or all when working together for long periods of time) cause problems when running ffvii... of course it has to be a very long time otherwise i'd have seen it earlier (what, with at least 100 times going in and out of the game testing things these past two days). but it is still likely just ffvii crapping out under the stress :-P.

also... i cheated in the redone mono drive ai (still under construction) and made it have two script ends, one at the normal end, and one after the warning/enemy sighted message, so that a whole other variable can be tossed, as well as a check for it's value and changing that value, and in it's place just one byte placed :-P. it works though, since i tested it by having it cast fire outside of the message loop, which would happen the turn after showing the message. it showed one message, then on the 2nd turn cast fire (and every turn after that as well), so i know this works. a sneaky way to reduce variable usage, and should be helpful to me many times.
« Last Edit: 2009-05-29 12:42:21 by secondadvent »

warbaque

  • *
  • Posts: 44
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #16 on: 2009-05-29 13:20:26 »
a quick question, guard scorpion makes its mdef 384 when it's tail raises up, does it actually make it that high or does the mdef overflow instead? i know that the actual stat cannot go over 255 in the enemy's data in the scene, but if you could make stats go over their max in the ai, that would be pretty fun :-P. just want to know for later when i reach his ai.

edit: ok i just tested him myself (made him appear after the mp fight :-P) and i did ~85 damage normally, and ~35 when he boosted his mdef (counter stance), so it does apparantly break the normal limits. this is good to know :evil:.
Enemy AI editing, Dragon Force spell and Hero Drinks are only way, that I know, to raise stats over 255 during  battle.
Damage formula would allow stats as high as 512 for def and mdef until attacks started doing negative damage.
[Dam]=Dam*(512 - Def/MDef)/512

There are multiple enemies that I know to boost their stats over 255 through AI editing, either permanent stats over 255 or under certain circumstances.

255 in defensive stats + either Hero Drinks or Dragon Force is an easy way to break the game -> 0,4% Dam taken.

I've thought that for balancing I should either remove Def/Mdf Mod abilities from player and for example replace them with Att/Mat mod effects or make strongest attacks piercing which on the other hand has a problem of making Def/Mdf stats useless.

I'm not sure if it's even possiblle to make Att/Mat Mod effect since if I recall correctly there's only (Att Mod, MAt Mod, Def Mod, MDf Mod) effect and (Def Mod, MDf Mod) effect.

In the end the endgame is quite hard to balance if not impossible. Thing that I personally do not like.
510 def stats
3*Dam ultimate weapons, physical 27k Dam without critical hits which occurs 64% of the time

so phase one of my mod is ai compression, phase two much harder difficulty in a balanced nature, phase three massive ai overhaul. doesn't sound too bad, and if anybody wants to test out the reduced ai size scene file, i will gladly up it somewhere and put the link here (or email it to those who want to try it/use it for further modding), since it should definitely be a big help to psx version hackers. it will be based off of a clean scene.bin, so enemies should have no other changes aside from simplified ai, so it should act just like a normal scene.bin ai wise (will probably fix ai errors, such as with the cactuars, and adamantaimai's cure bug, but it would need a change in the hex, no sweat there). the ai will NOT be 100% alike with the normal one, but I will make enemies do essentially the same thing, removing unnecessary parts and allowing bugged things to work, and i will be testing every enemy until they work as desired, so this will take time but should pay off in the end.

of course when i finish each stage of my mod, i will send it out for beta testing for suggestions and such, to hopefully make things better, but i know that there are other mods already out, so i wouldn't be surprised if nobody wants to test mine :evil:. hopefully i can still get help when i need it with ai stuff here, as well as future PrC releases (yes, if you can play with copy/pasting, that would be great! if you can't make it happen without screwing things up, that is fine, but i don't really see why it would cause problems... all it would have to do is emulate someone actually typing in the info.).
I can help you if you happen to need any.

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #17 on: 2009-05-29 13:39:40 »
So, are dead enemies not deleted from combat scene's memory buffer upon death? Interesting! Because I was thinking about something like Capsule which Hojo executes in combat, although this one involves expanding the buffer and if removing from buffer is impossible then adding to it likely to be out of question

Nope. Nothing gets removed from memory until all the enemies are flagged as "dead". This signals the Battle Engine to end the battle and perform memory clean ups. Case in point, Angel Whisper can resurrect fallen enemies if you target them before they die. Hojo's Capsule just reveals the sample enemies that are already there but invisible and un-targetable. Want to make an evil mod? Make an invisible untargetable enemy that can attack. Seems likely, but I haven't tried it.

Yes, I know about the tradition. I was asking about "Proud Clod" in the game.

It was actually Plaid Claude in the Japanese game, but no one liked that name. ;)


PrC is about to get a new upgrade; Hopefully today. I'm going to give it the ability to (really) add attacks to an enemy. I was only focused on the AI and didn't realize that each enemy has a list of attacks to perform and animations to perform during said attacks. Only problem is, it's a doozey (real word btw....maybe) of a window to make. It has 32 drop downs for each enemy in the scene. 16 for attacks it can perform and 16 for animations it performs during those attacks. So yes, that's 96 drop downs and 48 of them are all going to be populated when the form loads with the attack names. That's going to take a while, but I have ways of making it take less time. ...better get to it.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #18 on: 2009-05-29 14:30:27 »
or you could just make one enemy selected from a group at a time (like tabs in hojo), to make the window smaller overall. that shouldn't be as bad then.

i just finished the mono drive ai, and it hit 190, bigger than i thought it'd be when shrunk >_>. it and guard hound are acting perfectly though, and for guard hound and mono combined, that is only 300 bytes, when GH had that (close) originally, and mono had over :evil:. i can tell this will take time, but it will be worth it.

Quote
I can help you if you happen to need any.

for now i think i will go solo on the programming, but if you'd like to test my scene.bin as i go along (i am testing as well, but usually only for a few minutes when the ai is complete, though i test as much as i can think of to test), that'd be fine, or any ai help i end up needing, which shouldn't be too much until i finish "compression". i will probably not cover too much ground very fast, but i will be focusing everything on this project before moving onto anything else (i hope), and i have plenty of time to do this. i do have college, but that is easy, especially since i am online :-P. i don't check every different scene with enemies i edit, only a battle in the first one i complete, so it is possible that problems could arise in other versions of the enemy's ai since it is all retyped into each new scene. that is where i need the most testing, but if i had to check each and every battle, i wouldn't be going too far now would i? :evil:. also, if you were able to give any ideas as to how i could compress my code even further by looking at my current version, that'd help as well ^^.

i know it isn't an easy task to fix (not asking you to), and will likely not happen anyway, but the indentation for multiple ifs' is really inaccurate, especially with my ai :evil:. even if it were pretty accurate, i'd still be going through my code manually to check for problems, since everything has to be perfect, so it isn't even that bad. i have not had one made by me that showed the perform outside of an if, even though none have been in one :-P.

i wonder if i can even shrink the 1st ray's ai any? it is kinda puny to begin with  :lol:
« Last Edit: 2009-05-29 14:49:59 by secondadvent »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #19 on: 2009-05-29 14:42:00 »
or you could just make one enemy selected from a group at a time (like tabs in hojo), to make the window smaller overall. that shouldn't be as bad then.


Nah. This'll do.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #20 on: 2009-05-29 14:46:58 »
very nice... i guess it didn't take up that much room after all :-P.

heh... i cheated and copy/pasted the ai of mono drive (since it was pretty big) from scene 78 onto scene 79+80 with translhextion, since the enemies are in the same order in all three, except 1st ray isn't in the 80th, so i just filled it's part with FF, as well as it's pointer :-P. i also copy/pasted the string from the mono ai, since PrC allows for you to copy what is already in a box... just no selecting of large parts of the script to copy. laziness ftw!
« Last Edit: 2009-05-29 15:17:52 by secondadvent »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #21 on: 2009-05-29 15:26:01 »
very nice... i guess it didn't take up that much room after all :-P.

And It works too. I just tested it on the Midgar Zolom and got him to do that attack that I gave him that it wouldn't do before. Pretty nice if I do say so myself. :) Just got to get that attack right now...

Just learned that battle address 402E is not invisible, but unhit-able. I set this on Midgar Zolom thinking that he might become invisible, but instead I couldn't hit him with anything after that. Even Ultimate End which has a hit rate of 255 and ignore defense! Dangerous....
« Last Edit: 2009-05-29 15:45:39 by NFITC1 »

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #22 on: 2009-05-29 16:22:44 »
hmm... then it is possible that the invisible thing is elsewhere then? *runs to check ghost's AI*

maybe using attack 014f (appear used by ghosts) and 014e (vanish) will set whatever is needed as an outside of the AI script, at least until we know what the opcode, if any, allows for invisibility (though i think everything appears for ai to use, everything just wasn't used). could you try against MZ to see if it becomes invisible with the vanish attack? i will try if you don't once i finish up this enemy's ai (had to do school stuff :-P).
« Last Edit: 2009-05-29 16:28:13 by secondadvent »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Official Proud Clod 1.0 Topic
« Reply #23 on: 2009-05-29 16:27:30 »
hmm... then it is possible that the invisible thing is elsewhere then? *runs to check ghost's AI*

Maybe, but it's more likely that the "vanishing" effect exists in the character's animation. In Ghost's case, it looks like animation 5 makes it disappear and animation 6 makes it reappear. The setting of 402E in its script only makes attacks miss if the ghost was targeted before it disappeared.

secondadvent

  • *
  • Posts: 287
    • View Profile
Official Proud Clod 1.0 Topic
« Reply #24 on: 2009-05-29 16:31:24 »
yeah... the moves could be just a way for the game to call to the animation rather than what the move does (possibly nothing), and would require an animation for invisibility. still, i bet that there is something we can use somewhere to set the flag on/off, we just don't know what yet  :oops:. maybe 2f since it comes right after the can't hit flag?

if there is an invisible flag, my bet is that it is one of the ones from 4020-402f, since that seems to be where most of the special battle status things are located (like immunities and such). 20-22 are probably the special battle formations (ambush, side attack, pincer attack, or whatever vii calls them :-P), 2a could be a phys/mag immunity flag, though sephy would probably have used it instead of the two known ones (never know though based on how the ai scripting is), 2c could be long range, which would be very nice, and the 2f being invisible. just guesses, but they do seem to fit in with the surrounding things :evil:

i will test these out and point out what i notice, if anything, after finishing up this current script.

i think 402c is custom death animation (outside the normal boss/enemy death animations, which are generic), even chocobos use them... air buster (glitchy electrical animation), warning board (dont remember :-P), etc. may be just a part of it, but it is definitely related in some way (probably :-P). if it is, then the phys/mag immunity is out the window, and i replace my idea on it with long range (moved over from the possible death animation one :evil:)
« Last Edit: 2009-05-29 17:00:42 by secondadvent »