Author Topic: [FF7] Enemies editor - Hojo (1.0)  (Read 61630 times)

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #25 on: 2007-11-24 22:55:24 »

The kernel ONLy allows you to edit names of attack YOU use, but not the ones enemies use.
Enemy skills you use =/= enemy skills enemies use and magic spells you use =/= magic spells enemies use.

Hope you understand.

I understand what you mean but that is wrong. They are the same, BUT an attack can use the same animation have the same name and yet cause a different effect. That, however, requires the attack to have another ID than what was intended.

I'll make an example: An enemy uses Fire. The ID for Fire (the magic both you AND the enemy can use) is 0x00 1B. That ID is stored in the enemy data section in the Scene.bin. It's also stored after the attack data section to decide which attack the ID belong to (in order). Before the enemy use the attack the following order of bytes is placed in the AI: 60 20 60 1B 92.
Notice the bold part. The upcode 0x60 pushes one byte to the stack of the AI script. 0x00 1B is the Fire ID. But it pushes only 1 byte on the stack, not 2 (WORD). All attack IDs you don't share with the enemy, including manip attacks, are 2 bytes. In order to change the effect of fire, it doesn't help one bit to alter the Attack data of fire in the scene. You must alter it in the Kernel. HOWEVER, you can change the ID in all the places it is stored.  That way you can make your own version of Fire. Lets say you changed the ID to 0x01 01. Then you have to change the upcode as well in order to make it push 2 bytes (WORD), not just one. The AI becomes: 60 20 61 01 01 92.

This is how it works for me anyways. I dunno if I have some unique files or whatever. I play on PC. I have checked, double checked and 100x checked. You can't alter attacks with ID 0x00 xx.

I edited attack names in kernel2 and it only affected the names of my characters.

Example: I renamed Big Guard to Mighty Guard.
The enemy skill I used was named Mighty Guard.
However, if enemies used it, is was still named Big Guard.

Well I managed to do it. And I haven't changed a single name in the scenes. Try my Kernel2: http://www.speedyshare.com/190627846.html

UltimaYoshi

  • Cool newbie
  • *
  • Posts: 99
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #26 on: 2007-11-24 23:17:39 »
I know what you mean.... but it doesn´t work for me.
When I edit kernel2, it only affects my characters, while the scene only affects enemies.

Akari

  • Freak
  • *
  • Posts: 761
  • Karma: 26
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #27 on: 2007-11-25 04:19:36 »

The kernel ONLy allows you to edit names of attack YOU use, but not the ones enemies use.
Enemy skills you use =/= enemy skills enemies use and magic spells you use =/= magic spells enemies use.

Hope you understand.

I understand what you mean but that is wrong. They are the same, BUT an attack can use the same animation have the same name and yet cause a different effect. That, however, requires the attack to have another ID than what was intended.

I'll make an example: An enemy uses Fire. The ID for Fire (the magic both you AND the enemy can use) is 0x00 1B. That ID is stored in the enemy data section in the Scene.bin. It's also stored after the attack data section to decide which attack the ID belong to (in order). Before the enemy use the attack the following order of bytes is placed in the AI: 60 20 60 1B 92.
Notice the bold part. The upcode 0x60 pushes one byte to the stack of the AI script. 0x00 1B is the Fire ID. But it pushes only 1 byte on the stack, not 2 (WORD). All attack IDs you don't share with the enemy, including manip attacks, are 2 bytes. In order to change the effect of fire, it doesn't help one bit to alter the Attack data of fire in the scene. You must alter it in the Kernel. HOWEVER, you can change the ID in all the places it is stored.  That way you can make your own version of Fire. Lets say you changed the ID to 0x01 01. Then you have to change the upcode as well in order to make it push 2 bytes (WORD), not just one. The AI becomes: 60 20 61 01 01 92.

This is how it works for me anyways. I dunno if I have some unique files or whatever. I play on PC. I have checked, double checked and 100x checked. You can't alter attacks with ID 0x00 xx.

I edited attack names in kernel2 and it only affected the names of my characters.

Example: I renamed Big Guard to Mighty Guard.
The enemy skill I used was named Mighty Guard.
However, if enemies used it, is was still named Big Guard.

Well I managed to do it. And I haven't changed a single name in the scenes. Try my Kernel2: http://www.speedyshare.com/190627846.html

There are split in code for attacks with id 0x0-0x38, 0x39-0x48, 0x49-0x60, 0x60-0xXX. Maybe this is for data from where to load names?

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #28 on: 2007-11-25 07:30:45 »
The manip menu loads from the scene file. The actual attack loads from the kernel. In other words, when maniping an enemy, the names in the menu will not change unless you do it in the scene. However when the enemy cast the magic, it will load from kernel, thus diplaying what it is named there in the top of the screen.

The Skillster

  • No life
  • *
  • Posts: 2284
  • Karma: 3
  • Loving every Final Fantasy
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #29 on: 2007-11-25 13:47:31 »
Are you two doing completely different things? There must be some differences if you cant reproduce the same effect?

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #30 on: 2007-11-25 21:27:11 »
We talk about the same. How to change the attacks names of the enemy. If anyone could download the Kernel2.bin in the 1st post on this page and clear this up it would be great.

After downloading, backup you original Kernel2.bin and use mine. Then enter the game and fight Beachplugs on the shores (beach) near Costa del Sol. Manipulate one. On the manip menu it should say: Bite, Ice, Big Guard. Cast ice. When Beachplug use it, it should say Blizzard in the info window on the top of the screen.

This is if you haven't already changed the names in the scene. Then it would say -in the manip menu- what you changed 'em to.

UltimaYoshi

  • Cool newbie
  • *
  • Posts: 99
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #31 on: 2007-11-25 22:15:30 »
Argh, can we please drop this?
I dun want this topic to drown in spam. :-(

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #32 on: 2007-11-25 22:39:14 »
Relax! I'm not trying to prove you wrong or anything. I just want to clear up why there is a difference in our files (if any). It would help me a great deal when altering the scenes. But you're right, it's off topic. I'll start a new thread in gametweeking I guess...

warbaque

  • Fast newbie
  • *
  • Posts: 44
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #33 on: 2007-12-18 02:53:17 »
Quote
I've planned to add some new features in Hojo, in which a better attack editor ( the current one only allows you to edit attacks name).

Quote
In a next version of Hojo I will develop the "monsters formation" aspect (with the possibility to change what enemies are in each formation, etc).

Yay, new features.

It seems very nice already atleast from what I've tried it.

How do you check and calculate status weaknesses? If at all.
Corvette, for example, takes 2x damage from confusion based attacks. Your editor shows (none) x2 in Elements. I don't remember if there are other enemies with similar "special atributes".
edit. I became curious how many enemies like that there is in total. Final answer is (or should be if I didn't miss any) 8:
Sword Dance, SOLDIER:3rd, and before mentioned Corvette have status weakness for confuse
Palmer has status weakness for sleep
Ghost, Zenene, Ghost Ship, and Dragon Zombie absorb death
edit2.
Also hidden elemental isn't mentioned. Though there's only 1 monster which is affected by this elemental, cactuar who is immune to it. But I think it should be included just because it exists like cut, hit, punch, shout, and shoot.

I noticed that in second and third enemy in each file 1-256 under Manipulation there reads "Can be manipula" instead of "Can be manipulated"

But other than those two I haven't found anything distracting. Great program.

I can hardly wait to see attack and formation editing featured in future releases.
« Last Edit: 2007-12-18 05:31:16 by warbaque »

The Black-caped Man

  • Crazy poster
  • *
  • Posts: 167
  • Karma: 0
  • The time........has come........!
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #34 on: 2007-12-19 13:16:30 »
Great editor but as far as I can see the only difference to scenester is the status immunity function. I would appreciate if the attack editor was finished quickly so we are finally able to change attacks without hex editing

warbaque

  • Fast newbie
  • *
  • Posts: 44
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #35 on: 2007-12-19 15:24:44 »
as far as I can see the only difference to scenester is the status immunity function.

Scenester includes already formation editing and Hojo has better gui in my opinion (search function for example) and status immunity function which you already noted.

But you're right. There are only minor differences.

Neither Hojo nor Scenester include statuses as elements as they are treated in few occasions, corvette and zenene for example, and 'hidden' elemental isn't mentioned.

But after attack data and formation editing have been included in Hojo it should become "the ultimate" enemy data editing tool.

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #36 on: 2007-12-23 12:41:31 »
Also if you add an AI editor. That is the most tedious part when editing.

ARMs

  • Crazy poster
  • *
  • Posts: 164
  • Karma: -1
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #37 on: 2007-12-23 21:57:10 »
That would be cool if it can be done.   Though i would imagine it might be as hard to program as Kimira.   Actually i have no clue but it would be much harder then anything done on these program so far.
« Last Edit: 2007-12-23 22:31:38 by ARMs »

Squall78

  • Crazy poster
  • *
  • Posts: 127
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #38 on: 2008-03-05 21:08:13 »
Hi there !

I've released a new version of Hojo : 1.1.

Changes :
- now Hojo can recognize 3 new elements : Unknown (0x0F) (used by Cactuar for example), Death (0x20) (used by Zenthe for ex.), Sleep (0x22) (only used by Palmer) and Confusion (0x26) (used by SOLDIER : 3rd for ex) and 1 new effect : 'Nerver miss' (0x01) (always combined with 'Punch' element on 3 or 4 enemies).
- errors fixed in the LNG file

Download link :
http://www.ffheaven.fr/projects/Hojo 1.1.zip

Ooh.... and please, if you translate Hojo (by copying and editing the LNG file) please, send me your new LNG file :). It will be joined with the program. Thanks.

Ragna

  • Insane poster
  • *
  • Posts: 265
  • Karma: 2
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #39 on: 2008-03-06 15:14:54 »
Here you have, I translated it into Spanish:

http://rapidshare.com/files/97583998/spanish.lng.html
« Last Edit: 2008-03-06 20:29:23 by Henkäys Ikuisuudesta »

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #40 on: 2008-03-12 02:40:20 »
Are there something concerning the scene.bin you don't understand. Like attacks, battle setup etc. I might be able to help you if you don't. By the looks of it you seem to have plenty knowledge.

LJH

  • Crazy poster
  • *
  • Posts: 133
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #41 on: 2008-03-22 15:49:50 »
Even just being able to automatically insert the AI script, even if we still have to write it ourself, would be nice.

Just so we can edit that (and attack data) without having to mess around with a hex editor.

(Exactly what I mean is, even if we still have to write the code, but the program inserts it in the right place and puts in the pointers and stuff)
« Last Edit: 2008-03-23 10:53:44 by LJH »

Lag.Com

  • Fast newbie
  • *
  • Posts: 28
  • Karma: 0
  • Nyan-te na!
    • View Profile
    • Lag.Website
Re: [Release] Hojo 1.0 - enemies editor
« Reply #42 on: 2008-04-19 21:03:39 »
I wrote a (BASIC-like language) to FF7-AI code compiler, but it is quite primitive so far.

LJH

  • Crazy poster
  • *
  • Posts: 133
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #43 on: 2008-04-21 02:42:38 »
I wrote a (BASIC-like language) to FF7-AI code compiler, but it is quite primitive so far.
DO WANT!!!

Lag.Com

  • Fast newbie
  • *
  • Posts: 28
  • Karma: 0
  • Nyan-te na!
    • View Profile
    • Lag.Website
Re: [Release] Hojo 1.0 - enemies editor
« Reply #44 on: 2008-04-21 11:09:09 »
Ergh, would you believe it...

I was having some problems with the drive I have most of my code on a while ago, but now they seem to have cleared up. However, the one source file that deals with my BASIC implementation (ai_basic.py) has been corrupted beyond repair. Isn't that typical? However, I can release my old compiled version of 'ff7mod', a command-line util for changing most kernel and battle parameters. Yes, it includes the FF7AI-BASIC compiler.

Read the readmes, and ask me any questions. If it's deemed useable by people other than me, I'll make a new topic about it. And if I can be bothered, I'll try and rewrite my ai_basic.py script. :)

LJH

  • Crazy poster
  • *
  • Posts: 133
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #45 on: 2008-04-21 11:33:14 »
Hm, I might be able to make something if anyone can give me a detailed and simple to understand explanation of how the AI scripting works...

I don't quite understand your script language, either, sorry...

Lag.Com

  • Fast newbie
  • *
  • Posts: 28
  • Karma: 0
  • Nyan-te na!
    • View Profile
    • Lag.Website
Re: [Release] Hojo 1.0 - enemies editor
« Reply #46 on: 2008-04-22 22:45:00 »
The 'script language' is just Python, that's why it's saved in .py files

The AIBASIC-FF7 language is pretty much fully documented in the txt files, I don't know what help I could give you with that.

LJH

  • Crazy poster
  • *
  • Posts: 133
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #47 on: 2008-04-23 08:24:51 »
I don't really understand it even through that.
Perhaps a few example scripts, explained well through comments, would help... I often find this easier to learn off...

(The provided scripts don't exactly explain what they do and why)

gjoerulv

  • No life
  • *
  • Posts: 1113
  • Karma: 34
  • me
    • View Profile
    • My Youtube
Re: [Release] Hojo 1.0 - enemies editor
« Reply #48 on: 2008-04-24 22:09:45 »
Here are some AI examples I've jotted down while creating enemies. Some is Norwegian but you should be able understand.

Code: [Select]
FORVOKSE FIENDER
12 60 20
11 [98 40]
80
02 60 20
01 [98 40]
80
60 0A
30
90


  :::::Adresser:::::
ATTACK (str)
4068h

MATTACK
4070h

DEF
4100h

HP
4160h Current - 4180h Max

Physical Immunity
4028h

Magical Immunity
4029h

MDEF
4110h

EXP
4020h

Target able
4023h (01h = on, 00 = off)
h
AI Main
4024h (01h = on, 00h = off)

STATUS
4000h = death (60h 01h = true)

DEX
40A0h

Last attacker Mag
40F0h

Last att General
40D0h

MP
4041h
::::Skripter:::::
:::80 = (AND):::

RANDOM NUMBER (if XX MOD random nr 0-65535 == 0 GOTO ZZ ZZ)::::
81(random)| 60(byte 61 = WORD 62 = DWORD), XX| 34(MOD)| 52(NOT)| 70 ZZ ZZ|
END END END

Checks if Current Hp is under MAX HP/XX*YY. (if not GOTO ZZ ZZ)::::
02, 60 20| 03, 60 41| 80(AND)| 02, 60 20| 03, 80 41| 80| 60, XX| 33 (div)| 60, YY| 32 (mul)| 43(<=)| 70, ZZ ZZ|
END END END

Checks if Current Mp is enough to cast ID. (if not GOTO ZZ ZZ)::::
02, 60 20| 02, 40 41| 80| 60, ID (or 61 ID ID)| 86 (get mp cost of ID)| 42(>=)| 70, ZZ ZZ|

Execute ID on target::::
12, 70 20| 02, A0 20(20A0 = opponents)| 60, 20| 60, ID (or 61, ID ID)| 92(Run ID)| (often after an ID is executed it jumps to the end of the AI: |72, ZZ ZZ|)

Set target (1 or all) and execute ID and::::
12, 70 20| 02, A0 20| 82 (only if 1 target, if all; skip this)| 90| 60, 20| 60, ID (or 61, ID ID)| 92|
NOTE: Switching between 1 and all targets only works if Target byte in attack data is 0x0F. Default works as 1.
END END END

(counter) Attack the target's last attacker::::
02, 60 20| 02, D0 40| 80| 90| 60, 20| 60, ID (or 61, ID ID)| 92|-> set Row 12, 60 20| 10, 28 40| 80| 90|
END END END

Sets counter (Not as in counter attack) to address YY YY and counter = random(0.. (X - 1))::::
11(push value), YY YY| 81(random)| 60, XX| 34(MOD)| 90|
END END END

If counter (Not as in counter attack) from address YY YY isn't XX (XX) GOTO ZZ ZZ::::
01(load address), YY YY| 60, XX (or 61, XX XX)| 71 ZZ ZZ| 
END END END

Checks if target got status 40 XX (where 00 is death etc) If not GOTO ZZ ZZ:::
02, 70 20 (if check is on self: 60 20)| 00, XX 40| 80| 60, 01 (00 if the check for which status it doesn't have)| 40(==)| 70 ZZ ZZ| 
END END END

Checks if address XX XX is "checked/used". If not GOTO ZZ ZZ
00, XX XX| 52| 70, ZZ ZZ|
END END END

Self = 0000 Cloud = 0020
12,00 00| 02, 60 20| 90| 12, 20 00| 02, 50 20| 01, 60 40| 80| 60, 10| 40| 90|
END END END

Set Cloud as self use attack (0020 = CLoud (se '2050' over) 0000 = target)
12, 60 20| 02, 20 00| 90| 12, 70 20| 02, 00 00| 90| 60, 01| 60, 00| 92|
END END END

self immune to Phys (4029h Mag)
12, 60 20| 10, 28 40| 80| 60, 01| 90|
END END END


Target = 1 random opponent
If (Target Current HP == Target Max HP)
{
if(1/2)
PrintMessage("Estuans interius ira vehementi");
else
PrintMessage("Sors immanis Et inanis");
Target Current HP = 0;
}
Else
{
PrintMessage("Veni, veni, venias, Ne me mori facias");
Target Current HP = Target Max HP;
}

12, 00 00| 02, A0 20| 82| 90|
If: 02, 00 00| 03, 60 41| 80| 02, 00 00| 03, 80 41| 80| 40(==)| 70, YY YY(GOTO ElseY)|
If: 81| 60, 02| 34| 52| 70, XX XX(GOTO ElseYX)|
93 (Estuans interius ira vehementi) FF| 72, AA AA|
ElseX: 93 (Sors immanis Et inanis) FF|
AA AA: 12, 00 00| 13, 60 41| 80| 60, 00| 90| 72, ZZ ZZ(GOTO End)|
ElseY:
93 (Veni, veni, venias, Ne me mori facias) FF|
02, 00 00| 13 ,60 41| 80| 02, 00 00| 03, 80 41| 80| 90|
End: 73|

END END END END END END END END END END END END END END END

If(1/4)
Use Beak;
Else if (1/8)
Use Hell Charm;
Else if(1/16)
Use HC all;
Else
PrintMessage("Qwim's taking a break...");

81| 60, 04| 34| 52| 70, XX XX|
12, 70 20| 02, A0 20| 82| 90| 60, 20| 61, 01 01| 92| 72, ZZ ZZ|
81| 60, 08| 34| 52| 70, XX XX|
12, 70 20| 02, A0 20| 82| 90| 60, 20| 61, 02 01| 92| 72, ZZ ZZ|
81| 60, 0F| 34| 52| 70, XX XX|
12, 70 20| 02, A0 20| 90| 60, 20| 61, 02 01| 92| 72, ZZ ZZ|
93 (Qwim's taking a break...) FF| 73|

END END END END END END END END END END END END END END END END

SETUP:::::::::::::::::
Selve's 4278 = 150;
Count = 0;
END:::::::::::::::::::

MAIN:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
If(Self MP <= 1/4 AND Count < 3)
{
Use Hyper Ether on Self;
Count += 1;
}

Else If(Any ally have Reflect, Slow or Stop AND 1/4)
Use DeSpell on target(s);

Else If(Any opponent have either Shield, Regen, Barrier, Mbarrier or Haste AND 1/3)
Use DeSpell on Target(s)

Else If(Any ally have either Darkness, Mini, Confuse, Silence, Berserk, Paralyzed, Petrify or Slow-Numb AND 1/2)
Use Esuna on target(s);

Else If(Any ally have Poison Status AND 1/2)
Use Poisona on target(s);

Else If(1/2)
{

If(Self doesn't have Barrier, Mbarrier, Shield or Resist and 1/3)
{
if(1/2)
{
Use Wall on self;
Use Resist on self;
}

Else
{
Use Shield on Self;
Use Resist on self;
}
}

Else If(Self doesn't have Shield, Haste or Resist and 1/2)
{
Use Haste on self;
Use Resist on self;
}

Else If(Self doesn't have Shield, Regen or Resist)
{
Use Regen on self;
Use Resist on self;
}

Else
{
If(1/2)
Use Phy1 on random opponent;

Else
use Phy2 on random opponent;
}
}

Else If(Selve's HP <= 1/4 AND 1/2)
Use Fullcure on Self;

Else
Use Ultima on all opponents;
END::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

END END END END END END END END END END END END END END END END

IF self = self A, else GOTO XX XX and keep var X(the 1st in stack)
02, 60 20| 01, 60 40| 80| 60, 00 (00 = A, 01 = B etch)| 71, XX XX
END END END

If self != SHIELD cont Barrier
== GOTO ATTACK
If self != Barrier & MBarrier cont HASTE
== GOTO ATTACK
If self != HASTE cont Regen
== GOTO ATTACK
If self != Regen cont Resist
== GOTO ATTACK
If self != Resist GOTO rand Buffer
== GOTO ATTACK
If(1/4) Shield END != Next etc...
« Last Edit: 2008-04-25 03:27:32 by gjoerulv »

auxili160

  • Insane poster
  • *
  • Posts: 262
  • Karma: 0
    • View Profile
Re: [Release] Hojo 1.0 - enemies editor
« Reply #49 on: 2008-06-13 02:34:45 »
Just wondering if anyone has encountered bugs. For a scene editor, this program seems pretty good (seems better than sceneeditor and scenester so far).

Edit: How come Hojo doesn't let you edit the formations? Maybe I'm missing something. Could someone tell me how to edit enemy formations by using hojo?
« Last Edit: 2008-06-15 00:52:39 by auxili160 »