Show Posts

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


Messages - Armorvil

Pages: 1 2 3 [4] 5 6 7 8 9 ... 25
76
Who's to say Vgr doesn't know anything about AI editing? I don't know who does and doesn't.

But something tells me Vgr is no expert in this field :

Quote from: Vgr
I am pratically a n00b at AI-editing (did you remember AV? )

:P (and yes Vrg, I do remember)

Quote
The Local_Var:00E0 thing is a little confusing. We're not testing if it's greater than 0 in the beginning, we're testing if it's NOT greater than 0.

If ( !( Local_Var:00E0 > 0 ) )

That exclamation mark means that result is NOT'ed. So we're logically testing if that value is less than or equal to 0. Notice that in the AI, if Local_Var:00E0 is greater than 0, then we're skipping assigning a value to it.

Aaahhh, now that makes sense. Thanks ! :)

Quote
Also, you can easily set the NullRestorative with poison by setting it to the same value as your posion status.

12  2060
10  42A9
80
02  2060
00  4003
80
90

Now when Cloud is poisoned, Restorative elemental attacks do nothing. Then when Poison is lifted, so does that nulling. No fancy ifs are needed.

*Brain asplodes* I'm in awe, sir. With my own vocabulary to decipher AI, this script means that you loaded the value of self+poison into the address of self+nullrestorative, huh. I find this concept hard to grasp, but I love the fact that it works ! :D Thank you very much ^^ When I understand it all, I could maybe write a "FFVII AI for the dummies" FAQ of sorts, with my own simple vocabulary (if that is even possible). ...But for now I still have to clean the gray matter that is dripping out of my right ear, and study more.

Quote from: Bosola
In fact, you can basically say, 'take a word of everyone's poison status, make that everyone's nullRestore status'. Put that on all player charactesr (or maybe one character with script links) and every monster experiences the same thing too.

This is really interesting. If I had known such a thing exists, I wouldn't have pasted the Seizure script into almost all enemies' AI scripts (because of this, my scene.bin grew to a whopping 304Ko).

77
I appreciate your interest, but shouldn't we wait for Bosola, NFITC1, or whoever who knows something about AI scripts to reply instead ?

78
You have the right logic but it's not that easy to pull off, I'm afraid... And I only know how to enable something, not how to disable something.

79
Urgh. I'm still learning, and it looks like I still have problems with AI scripting -__-

I spent a lot of time trying to pull this off, tonight. Here is your script translated in words I understand more easily (= no POP, PUSH, MASK or STACK for me :P) :

Code: [Select]
02 2060 -> Load value of Target=Self
00 4003 -> Load value of Status=Poison
80 -> Combine the two above (Self+Poison)
70 002D -> If the above is not true, Jump to the address 0x02D. If true, continue with script:

02 00E0 -> Load value of {VAR E0}
60 00 -> Call for value : 00
44 -> Greater than (meaning of those 3 lines : if value of {VAR E0} is greater than 0)
70 001E -> If the above is not true, Jump to 0x01E. If true ({VAR E0}>0), continue with script :

12 00E0 -> Load address of {VAR E0}
02 2060 -> Target = self
02 4180 -> MaxHP
80 -> Combine the two above (Self+MaxHP)
90 -> Put value (Self+MaxHP) into address of {VAR E0}
12 2060 -> Load address of Target=Self
12 4180 -> Load address of MaxHP
80 -> Combine the two above (Self+MaxHP)
02 2060 -> Load value of Target=Self
02 4160 -> Load value of HP
80 -> Combine the two above (Self+HP)
90 -> Put value (Self+HP) into address (Self+MaxHP)

As you said this isn't complete, since when Poison is cleared, the value we saved into {VAR E0} needs to be inserted back into the address of (Self+MaxHP). This is the easy part. But what I don't get is why do we need to set the value of {VAR E0} to zero when Poison is cured (at the first jump address ?), since MaxHP will only drop again (when Cloud gets Poisoned again) if {VAR E0} is greater than zero...

I understand the logic, but here is my problem : in the beginning of your script, we need the value of {VAR E0} to be greater than 0, but we didn't set it to anything beforehand. Do all variables like this one have an initial value of 1 or something ?... ...It would have made more sense if variables had an initial value of zero (this is the case in FFVI, since, to make enemies talk once at the start of a battle, the script would look like this :

Code: [Select]
If {VAR E0} is 0,
Display message : "Go guys ! Ha Ha ha... ...Give up ?"
Set {VAR E0} to 1,
End if

Variables like this one always being 0 at the start of a battle, it ensures the dialog box only displays once, since we set it to 1 before the condition ends. End of the FFVI parenthesis)

Sooo, because of the fact that {VAR E0} is not 0 right from the start, I fail to see how we can use it as a condition, since the other value we will load into it is also greater than 0 (Cloud's maxHP ; ie 2500).

Anyways, since my attempts at creating a working script with the above ended up with Cloud's maxHP becoming 0 (when I set {VAR E0} to 0  :-P ) and thus killing him, I tried to use Bosola's idea instead : using NullRestorative. So I made this script (with my very-personal-and-not-very-accurate AI translation :D) :

Code: [Select]
02 2060 -> self
00 4003 -> poison
80 -> combine
70 XXXX -> if not, jump to end of script
12 2060 -> load self
10 42A9 -> load nullrestorative
80 -> combine
60 01 -> activate !
90 -> Go ! :P

LOL-worthy translation, ain't it ?  ;D
And I bet you guys already see the problem ^^;
...It works, but when Cloud is healed from Poison, the NullRestorative doesn't go away... I looked through your help files in Wall Market and brainstormed until I got a headache, but I don't see how I can make use of the "if" statement to tell the game : "don't nullify Restorative if Cloud doesn't have the Poison status anymore, you retard". God, this sure isn't easy, especially for someone like me who never followed programming lessons. How frustrating.

80
What would I do without you ?
Thanks again, I'll try that :D

81
I gave the Poison status the "Disease" effect from FFXII. In other words, when under Poison, the character's MaxHP becomes the character's CurrentHP. The consequence is, you can't restore HP to a character under Poison, anymore.

To do this, I added this script to the characters' General Counter AI scripts :

Code: [Select]
02 2060
00 4003
80
70 001B
12 2060
13 4180
80
02 2060
03 4160
80
90

It's working great, except that when Poison is finally cured, the character's maxHP doesn't return to normal. It won't continue decreasing as the character's currentHP decreases, but it won't be his original max either (until the battle is over, of course). Here is an example :

Cloud has full (2500) HP. A Bio spell is sent his way, hits him for 800 damage and poisons him. Cloud's HP is now 1700. Poison damage triggers (70), and HP is now at 1630. Tifa uses Cure2 on him. Useless : his HP stays at 1630. Cid uses an Antidote and Cloud is cured. Enemy attacks Cloud and deals 200 damage. Cloud has now 1430 HP. Tifa uses Cure2 on Cloud. Efficiency is +1500 HP, but Cloud's HP only increases to 1630 (the last maxHP the AI registered).

How can I make it, so that Tifa's final Cure2 brings him back to 2500 HP ? (there is also a disturbing little side-effect : when Poisoned, Cloud's HP increases or decreases as soon as someone or something decides to alter it - not after the attack/healing ocurred... ...but it's not so big a problem and I don't think there's a fix)

82
For some weird reason, at one time, I had a Final Fantasy VII folder not only in the C:/Program Files/Squaresoft/ folder, but in the C:/Program Files/ folder too. So I had two kernel.bin in two different places. Of course, my FFVII only loads data from the C:/Program Files/Squaresoft/ directory, so changing the other one didn't do a thing. Maybe you have the same issue ? IE, your game was installed in two different places and your game loads another kernel ?...

Try a right click on your FF7.exe shortcut (the icon you use to launch the game), and select Properties. Then, check the target's directory.

Also, AFAIK, Wall Market should be able to remove the Read-Only flag, but check in Kernel.bin's properties that the box really is unchecked.

83
Completely Unrelated / Tron : the Legacy...
« on: 2011-05-12 17:05:17 »
...or "how to waste two hours of your life". My brother called me telling me "you have to watch it", and I just did. And, oh man, what a bore. Sure, the pictures are pretty, with nice music sometimes, but the storyline... ...It's not the first time my brother makes me watch a movie like this. I also had to sit through Transformers and the horribly-bad-but-critically-acclaimed Avatar. Next time he asks me to watch a movie, someone please remind me to tell him to fuck off.

No originality, cheesy stories with no depth, manichean plots & characters... ...blargh. If these kinds of all-style-but-no-substance movies are your thing go ahead, but if more "evolved" cinematography is what you're looking for, don't watch it. You've been warned.

84
FF7 Tools / Re: Official Proud Clod 1.5.0.α!
« on: 2011-05-12 09:58:08 »
Oh, I forgot this possibility. Glad you're feeling better.

85
Completely Unrelated / Re: Food Additctions?
« on: 2011-05-11 18:35:03 »
I don't have any food addiction, but you guys are making me hungry.

86
FF8 Tools / Re: New FF8 Tools: Archiver and TEX Converter
« on: 2011-05-11 18:32:47 »
7 years necro. Do we have a new record ?

87
I was never into the heavily J-icized JRPGs.  I prefer odd games like SaGa Frontier.

Speaking of which, SaGa Frontier is the only SaGa I really liked. I didn't try the SNES ones though (not sure if fans fully translated one) ; only SaGa Frontier 1&2, Minstrel's Song and Unlimited SaGa. The series is dead though, and it's a shame. There are so many game series I was into that died, it's frightening/sickening.

88
FF7 Tools / Re: Official Proud Clod 1.5.0.α!
« on: 2011-05-10 18:41:18 »
Yeah, I bet NFITC1 fixed it all the first time it was mentioned. I just wish he'd release the fixed version  :'(
I just hope the delay is caused by real-life obligations or new functions tricky to implement - not because NFITC1 lost the will to work on PrC. The latter would suck. A lot.

89
Solved Problems / Re: Trouble with window mode
« on: 2011-05-09 23:15:39 »
In that case, maybe a better fix for him would be to use a previous version of the custom driver.

90
Solved Problems / Re: Trouble with window mode
« on: 2011-05-09 23:10:22 »
It's a problem with some ATI drivers combined with Aali's custom driver v0.7.10b. I also have a Radeon and had the same problem. I fixed it by going to AMD's website, and used the "search drivers" feature to install the latest pack.

Here is the page where I mention the problem. It's reply 55.

Here is the thread where I mention how I solved the problem. It's reply 110.

91
I didn't realize earlier, but inside wallmarket.dat or proudclod.dat, you have a lot of useful addresses/values. Suddenly, everything becomes a lot easier to understand (and thanks for writing your tutorials NFITC1, they're awesome).

Little question : I looked through the addresses listed in the dat files, and couldn't find values for equipped stuff. It would be amazing if you could make an accessory like the Medic Armlet, that would grant the Auto-Potion ability or double the efficiency of restorative items & abilities. But you'd need the AI to check for the presence of this armlet first - and it doesn't seem possible. Or is it ?

92
Completely Unrelated / Re: My computer is dead
« on: 2011-05-08 20:20:00 »
Ha, I rarely open MSN these days. But you know, if you need to tell me / ask me something, PMs are there ;)

93
You've got two kernel.bin : kernel.bin and h_kernel.bin. The game must be loading the other one.

94
I see you managed to save a few things (such as the Buster Sword giving +7 to the Luck stat), but the model IDs are unaltered. Try this : go into your weapons tab, change Cloud's weapons' model ID to 00 in the top-right corner, then select File -> Create Kernel.bin. Then close Wall Market, and open it again. If you see your changes, then it's good and all of Cloud's weapons should look like the Buster Sword.

If not, well... ...it's weird. I tried it, and Wall Market sure saves the changes to Model IDs for me. And since you managed to save other things, I can't see how it wouldn't work. Better call Sculler and Muldy.

95
Completely Unrelated / My computer is dead
« on: 2011-05-08 10:05:13 »
I think. It's quite funny really, because I'm often the one who makes fun of those guys who work on projects, and suddenly their comp goes "poof". Like "of course your computer fried and you lost all your data ; these kinds of things happen so often".

Fortunately for me, I saw it coming and I made back-ups. Often. The latest backup I made was yesterday evening, in my external hard-drive. So the mod is essentially fine. Also, perhaps I can fix the problem... Right now my computer won't start and I can't even access set up (screen is frozen on the first screen, where you can see your RAM total, and there's a weird sound going on). I'm going to open the UC... ...The problem may have to do with a HDD that appeared to be broken (these days, before my desktop appeared, windows would always scan the disk and tell me files were corrupted... ...I even formated it to no avail).

So yeah, I'm forced to put my work on hold (and if you're wondering, I'm typing this with my ipod). My mod being perhaps 90% done, it would have been a shame if I had to quit now. Still, I need my computer ;_;

EDIT:

I was right : the old HDD was at cause. I got rid of it, and it's working fine now :D
Once again, I was too quick at yelling "Bwaahh, it doesn't work!". Bad habits die hard.

96
OK, I had a problem with the enemies that already had a General Counter script. A crash, because of the 90h I added at the end of the script. It isn't a good way to separate different portions of code (and I'd like to know how to safely do that, actually).

In any case, I decided to use the Magic Counter script for those enemies instead, and it worked perfectly :) A good thing rare are the enemies that have both a Magic Counter and a General Counter AI script. ...Anyways, this little adventure made me uncover a new PrC bug, but I'll mention it in the PrC thread.

97
No thanks Vgr, I already have what I need. I just wanted to try the ipod ;)

98
Proof in video ^^

It's the first video I make with my ipod, and -promise- the last time that I record a video vertically. That was a bad idea.

EDIT:

Oh crap, I just realized something. This JMP command is bad, since it will be different for every enemy in the game. I thought I'd just have to copy/paste the code to all the enemies in all the scenes... ...Tedious and time-consuming of course (I already did it with the enemies that die when they have 0 MP, so I'm not afraid of that), but not as much as also having to enter the hundreds of different JMP addresses ! :o Now I'm scared that this project will forever take my sanity away.

Isn't there a way to make such a code work for all enemies, without having to copy-paste it to all the enemies AND edit the JMP addresses ? Please, tell me there is way... ... ...If not, well, I'll just have to get to work. Tell the guys up there that they'll need more than that to make me quit ! :P

EDIT 2:

Mmm... ...Maybe I don't need to update the JMP address for each enemy after all : about those that already have a General Counter script, can I just paste my code at address 0x000, insert 90h at the end of the seizure code to separate it from the other counter scripts, and make the JMP opcode target said 90h ?

99
Thank you very much for taking the time to think about the code and to share the info :)

Still, I'm confused. I don't really need a code to change the player-characters' behavior when they're hit with Seizure (they already kneel and anyone with half a brain would notice their HP being drained away). Only the enemies'. I was hoping a code that checks for the enemies' status could be implemented in the party members' AI, but chances are it's not possible (oh yeah, and now that I think about it, is there a way to make use of the Formations' AI ? Because right now, if you try to edit them in any version of PrC, it crashes (it not really crashes, since you can edit the AI and leave the menu, but you won't be able to go back into the Fomation's AI menu afterwards)). End of parenthesis.

Back to the subject at hand. Actually, forget about Blind & animations. I just want a script that tells you that Seizure connects if the enemy is under the status (with a message at the top of the screen). It doesn't even have to be enemy-specific ; if I use the Seizure magic on a Cokatrice and the message "Enemy started convulsing" displays (thanks for the wording, by the way :D), anyone with half a brain should know that it is the Cokatrice that is now under Seizure ^^

Taking a look at your code, would adding this script under all non-Seizure-immuned enemies' General Counter scripts work ?

Code: [Select]
02  2060
00  4013
80              ; they have the "Dual" status
02  2060
00  401B
80              ; they have the "DualDrain" status
50              ; they have both statuses
70  XXXX
93  "The enemy started convulsing"

Small question though : what is the XXXX refering to ? Is it an address ? The enemy's ID ?...

(also, fun fact in the game mechanics : it looks like enemies that have less than ~40 HP are immune to Dual+Dual Drain, even if you didn't make them immune. In my mod, the MP enemies had 32 HP and didn't take damage from seizure. When I increased their HP to 40, the status worked  and decreased their HP to 8 (weird that the status wore off before it killed them, even though I already knew Dual has a limited duration. The Dual status sure lasts long enough to kill Cloud at full health, with any amount of HP... ...It may be because Regen isn't as effective on enemies as it is on characters, and since Dual is an inversed Regen...) 8-))

EDIT:

Nah, I just tried the above code in General Counter without the 70 XXXX part, and it doesn't work : the message "The enemy starts convulsing" always displays as a counter-attack, no matter what I hit it with (sword attack, Bolt, etc.). Perhaps the 70 XXXX would fix this, but I have no idea which values to insert instead of the XXXX.

EDIT 2:

I figured it out by myself :D. It's a JMP command, of course. Makes sense. So I just had to enter the address to jump to when the conditions aren't met (0031), and the message stops popping up when Seizure doesn't connect. I'm glad that I'm not entirely clueless with AI stuff. Thanks again NFITC1, now it works perfectly :D

100
New question. I'm a little annoyed that the Seizure / Dual status has no visuals when enemies are under this status, so I've been thinking of a way to let the player know that it worked.

There is the possibility of mixing Dual & Dual Drain with Blind. Since Blind doesn't work on enemies, I could make it so its graphical effect becomes Dual's. Only drawback is, when this particular magic would be used against characters, characters would also lose accuracy because of Blind...

The other option is to make use of AI, so a message at the top of the screen tells you that it worked. I would have to insert this code in every enemy's AI, or maybe I could insert it in the characters' AI to gain space. And of course, I don't know how to create such a code... ...I guess something like :

- If [target] is inflicted with Dual + Dual Drain,
- Displays message "Seizure connects !"

would work. I know the 93 opcode can display messages, it is with the first line I'd need help with.

Pages: 1 2 3 [4] 5 6 7 8 9 ... 25