[FF8] Auto-Potion, Darkside HP loss and more

  • Thread starter Thread starter Callisto
  • Start date Start date
Status
Not open for further replies.
C

Callisto

Guest
Hey guys,

I'm right before finishing my balancing mod, but there are still some things I'd like to change, but don't know how. Huge thanks to anyone who can help me with the following:

1. Auto-Potion: The items that work with this ability are Potion, Potion+, Hi-Potion, Hi-Potion+ and X-Potion. I'd like to exclude X-Potion from this list if possible.

2. Darkside HP loss: JWP helped me greatly with changing the Darkside damage multiplier earlier, but I realized that the problem is rather the mild HP loss when using the ability, and not its power. If possible, I'd like to increase the HP loss from 10% to 20% per use.

3. GF compatibility boosting items: Is there a way to remove the negative effect on other GF? I already found out how to modify the boost for each item in mitem.bin (menu.fs), however, the negative effect is always half the boosting value. In other words, there is no separate byte that controls the effect on other GF. Example: The effect for Bomb Fragment can be adjusted at offset 0x23B in mitem.bin. Raising or lowering that value affects the positive and negative effect at the same time. I guess there must be a formula somewhere in the .exe that can disable this.

4. Dispel + Damage: I would really like to have this for a certain enemy, but Dispel per se is actually a curative spell with a spell power of 0, so it never does any damage. I've tried making an offensive spell out of it, but then, it no longer removes positive status effects. Any ideas how to make it cause damage while removing status effects at the same time?

5. Cover Ability: I'm looking for the physical damage reduction multiplier here. I don't want the ability to reduce any damage at all.
 
Last edited:
2. change 0x4905B1 (0x905B1 in exe) from 02 to 01

3. change 0x4FC4B3 (0xFC4B3 in exe) from D1F8 to 31C0

4. How would you want it to react to zombified people?
You could try changing 0x49332F (0x9332F in exe) from 01 to 00 but it'd might impact other spells that use the attack type - i.e. it'd also change cure etc. You'd either have to make your own attack type, edit an existing one or change the cure spells so that they use the same attack type as the potions (healing fixed amounts).
You might also be able to change it for a specific magic.

5. change 0x491091 (0x91091 in exe) from D1EE to 9090

I might take a look into the others if I get time.
 
Last edited:
Awesome, thanks ;D

As for 4, I would like Zombies to react to the attack normally. That is, taking damage while having positive status effects removed. I know this is probably the most difficult of the options, but well.. Having cure spells dealing fixed amounts wouldn't be a good trade-off. Are there any unused attack types left in the code that could be used to realize this, perhaps?

Again, thanks for digging into this. Much appreciated.
 
Well, I have a small request too ! ;D

I have modified the init.out to change the default abilities of all GFs and managed to do it. But now, I want to modify the items and the amount of gils. It's quite a boring thing because I have to launch a new game after every change I do. So, is there someone who knows wich offset I have to change for these two things ? Thanks in advance !
 
If it's in init.out, you should easily be able to get the offsets from here
I think init.out starts at 0x60, so just subtract 0x60 from any offsets on that page.
e.g. that page lists starting Gil as 0x0B1C in the save game data, so it should be 0xABC in init.out
items should start at 0xAF4 but you might need to edit the battle order of items too (see the sections before items in the save game).
 
Last edited:
1. looking at the code, auto potion seems to work in this manner:
if maxhp - currenthp <= 200, use a Potion
else if (has Hi-Potion), use Hi-Potion
else if (has Potion), use Potion
else if (has Potion+), use Potion+
else if (has Hi-Potion+), use Hi-Potion+
else if (has X-Potion), use X-Potion
else if (has Elixir), use Elixir

if you want to exclude X-Potion, change 0x487AF4 (0x87AF4 in exe) from 74 to EB
if you want to exclude Elixir, change 0x487B1C (0x87B1C in exe) from 0F 84 C2 00 00 00 to E9 C3 00 00 00 90

4. The following changes should make a new attack type (0x25) which should do what you want:
Code: [Select]
Code:
0x4922D9 (0x922D9 in exe)from: 24to:   250x492AB8 (0x92AB8 in exe)from: 90 90 90 90to:   34 89 B6 000xB68934 (0x768934 in exe)from: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00to:   6A 07 8B 44 24 30 8B 4C 24 28 50 56 51 E8 3A A9 92 FF 83 C4 10 8B F8 80 25 DE 7A D2 01 FE E9 7B 9C 92 FF
I haven't tested the changes properly, so let me know if they work or not.

Expanding on mitem.bin, the items are as follows (they're in order of item ID):
Code: [Select]
Code:
0A 00 00 00 Empty00 03 04 00 Potion00 03 08 00 Potion+00 03 14 00 Hi-Potion00 03 28 00 Hi-Potion+00 03 FF 00 X-Potion00 0B 14 00 Mega-Potion01 23 00 01 Phoenix Down01 2B 00 01 Mega Phoenix00 03 FF 3E Elixir00 0B FF 3E Megalixir15 03 00 02 Antidote15 03 00 04 Soft15 03 00 08 Eye Drops15 03 00 10 Echo Screen15 03 00 40 Holy Water15 03 00 7E Remedy15 03 00 7E Remedy+07 00 00 00 Hero-trial07 00 00 00 Hero07 00 00 00 Holy War-trial07 00 00 00 Holy War07 00 00 00 Shell Stone07 00 00 00 Protect Stone07 00 00 00 Aura Stone07 00 00 00 Death Stone07 00 00 00 Holy Stone07 00 00 00 Flare Stone07 00 00 00 Meteor Stone07 00 00 00 Ultima Stone07 00 00 00 Gysahl Greens07 00 00 00 Phoenix Pinion07 00 00 00 Friendship06 2B 00 7F Tent06 2D 00 7F Pet House06 37 00 7F Cottage03 05 04 00 G-Potion03 05 14 00 G-Hi-Potion03 0D 14 00 G-Mega-Potion04 25 00 00 G-Returner0B 05 00 00 Rename Card12 05 00 00 Amnesia Greens11 05 01 00 HP-J Scroll11 05 02 00 Str-J Scroll11 05 03 00 Vit-J Scroll11 05 04 00 Mag-J Scroll11 05 05 00 Spr-J Scroll11 05 06 00 Spd-J Scroll11 05 09 00 Luck-J Scroll11 05 07 00 Aegis Amulet11 05 0A 00 Elem Atk11 05 0F 00 Elem Guard11 05 0B 00 Status Atk11 05 11 00 Status Guard11 05 13 00 Rosetta Stone11 05 14 00 Magic Scroll11 05 15 00 GF Scroll11 05 16 00 Draw Scroll11 05 17 00 Item Scroll11 05 19 00 Gambler Spirit11 05 1F 00 Healing Ring11 05 21 00 Phoenix Spirit11 05 1C 00 Med Kit11 05 24 00 Bomb Spirit11 05 25 00 Hungry Cookpot11 05 26 00 Mog`s Amulet11 05 53 00 Steel Pipe11 05 54 00 Star Fragment11 05 55 00 Energy Crystal11 05 56 00 Samantha Soul11 05 57 00 Healing Mail11 05 58 00 Silver Mail11 05 59 00 Gold Armor11 05 5A 00 Diamond Armor11 05 27 00 Regen Ring11 05 28 00 Giant`s Ring11 05 29 00 Gaea`s Ring11 05 2A 00 Strength Love11 05 2B 00 Power Wrist11 05 2C 00 Hyper Wrist11 05 2D 00 Turtle Shell11 05 2E 00 Orihalcon11 05 2F 00 Adamantine11 05 33 00 Rune Armlet11 05 34 00 Force Armlet11 05 35 00 Magic Armlet11 05 30 00 Circlet11 05 31 00 Hypno Crown11 05 32 00 Royal Crown11 05 36 00 Jet Engine11 05 37 00 Rocket Engine11 05 47 00 Moon Curtain11 05 46 00 Steel Curtain11 05 48 00 Glow Curtain11 05 49 00 Accelerator11 05 3C 00 Monk`s Code11 05 3E 00 Knight`s Code11 05 3B 00 Doc`s Code11 05 3D 00 Hundred Needles11 05 4C 00 Three Stars11 05 4D 00 Ribbon08 00 00 00 Normal Ammo08 00 00 00 Shotgun Ammo08 00 00 00 Dark Ammo08 00 00 00 Fire Ammo08 00 00 00 Demolition Ammo08 00 00 00 Fast Ammo08 00 00 00 AP Ammo08 00 00 00 Pulse Ammo0A 00 00 00 M-Stone Piece0A 00 00 00 Magic Stone0A 00 00 00 Wizard Stone0A 00 00 00 Ochu Tentacle0A 00 00 00 Healing Water0A 00 00 00 Cockatrice Pinion0A 00 00 00 Zombie Powder0A 00 00 00 Lightweight0A 00 00 00 Sharp Spike0A 00 00 00 Screw0A 00 00 00 Saw Blade0A 00 00 00 Mesmerize Blade0A 00 00 00 Vampire Fang0A 00 00 00 Fury Fragment0A 00 00 00 Betrayal Sword0A 00 00 00 Sleep Powder0A 00 00 00 Life Ring0A 00 00 00 Dragon Fang13 43 01 00 Spider Web13 43 02 00 Coral Fragment13 43 03 00 Curse Spike13 43 04 00 Black Hole13 43 05 00 Water Crystal13 43 06 00 Missile13 43 07 00 Mystery Fluid13 43 08 00 Running Fire13 43 09 00 Inferno Fang13 43 0A 00 Malboro Tentacle13 43 0B 00 Whisper13 43 0C 00 Laser Cannon13 43 0D 00 Barrier13 43 0E 00 Power Generator13 43 0F 00 Dark Matter10 83 02 08 Bomb Fragment10 83 02 10 Red Fang10 83 01 08 Arctic Wind10 83 01 10 North Wind10 83 00 10 Dynamo Stone10 83 08 08 Shear Feather10 83 0B 10 Venom Fang10 83 05 10 Steel Orb10 83 0A 10 Moon Stone10 83 04 10 Dino Bone10 83 08 10 Windmill10 83 06 10 Dragon Skin10 83 07 0A Fish Fin10 83 09 10 Dragon Fin10 83 03 10 Silence Powder10 83 0B 08 Poison Powder0A 00 00 00 Dead Spirit10 83 0E 10 Chef`s Knife10 83 0D 10 Cactus Thorn10 83 0C 10 Shaman Stone0A 00 00 00 Fuel0A 00 00 00 Girl Next Door0A 00 00 00 Sorceress` Letter0D 01 00 00 Chocobo`s Tag0C 01 00 00 Pet Nametag0F 01 00 00 Solomon Ring0E 01 2B 03 Magical Lamp14 03 0A 01 HP Up14 03 01 02 Str Up14 03 01 04 Vit Up14 03 01 08 Mag Up14 03 01 10 Spr Up14 03 01 20 Spd Up14 03 01 40 Luck Up10 83 FF 65 LuvLuv G09 01 00 03 Weapons Mon 1st09 01 04 07 Weapons Mon Mar09 01 08 0B Weapons Mon Apr09 01 0C 0F Weapons Mon May09 01 10 13 Weapons Mon Jun09 01 14 17 Weapons Mon Jul09 01 18 1B Weapons Mon Aug09 01 1C 1C Combat King 00109 02 1D 1D Combat King 00209 02 1E 1E Combat King 00309 02 1F 1F Combat King 00409 02 20 20 Combat King 00509 02 21 21 Pet Pals Vol.109 03 22 22 Pet Pals Vol.209 03 23 23 Pet Pals Vol.309 03 24 24 Pet Pals Vol.409 03 25 25 Pet Pals Vol.509 03 26 26 Pet Pals Vol.609 03 27 27 Occult Fan I09 04 28 28 Occult Fan II09 04 29 29 Occult Fan III09 04 2A 2A Occult Fan IV
from this, it's possible to conclude that the first byte is the item type and defines the effect/icon and the other 3 bytes are parameters.
Looking at the list, it seems the following item types are defined (note there might be more unused ones, I might look into it at some point):
00 - heal characters
01 - revive characters
03 - heal GF
04 - revive GF
06 - cure at save point
07 - no effect with pouch icon
08 - no effect with ammo icon
09 - magazine
0A - no effect with octagonal icon
0B - rename GF
0C - rename Angelo
0D - rename Chocobo
0E - start battle
0F - get Doomtrain
10 - increase GF compatability
11 - learn GF ability
12 - forget GF ability
13 - learn blue magic
14 - increase stats
15 - heal abnormal statuses
 
Last edited:
Wow, I didn't know that even Elixirs work with Auto-Potion as well. Thanks for thinking ahead and looking for a way to disable these too. Already tested and it seems to work perfectly as well as all the other things. Will be very helpful for my mod. Amazing work!! :)

When I was adding the code for the new attack type in the .exe, I noticed that there seems to be quite some more space for other types. Do you think it would be possible to create a move that works like a Megalixir + revives everyone at full HP? Pretty much like Angel Whisper in FF VII, just on all allies.
 
The space in the part of the exe that I dumped the code isn't the problem, the space in the jump table is - around 0x492AB8 (0x92AB8 in exe).
There's room for 1 more attack type without any major changes.
Couldn't you do that attack by using the same attack type as mega elixir but ticking the death status and revive flag (using Doomtrain)?
One thing to be wary of is that the dispel attack I've done might ignore enemy spirit, you might want to test that.
 
Last edited:
Alright, creating that ultimate healing move worked with Doomtrain just fine, as you suggested.

Yes, the Dispel attack ignores spirit indeed. I would rather not have it that way. I hope it's no big deal to figure out how to make it a normal magical attack. Please let me know once you found out which bytes to change.
 
If it's in init.out, you should easily be able to get the offsets from here
I think init.out starts at 0x60, so just subtract 0x60 from any offsets on that page.
e.g. that page lists starting Gil as 0x0B1C in the save game data, so it should be 0xABC in init.out
items should start at 0xAF4 but you might need to edit the battle order of items too (see the sections before items in the save game).
Thanks, with your help, I managed to do it. ;D
 
No problem Girl next door :).
ok, this should make a new attack type of 0x25 that behaves exactly like a magic attack except it removes statuses instead of adding them, I have no idea if there's any side effects or anything though :P.

First undo all the changes from before, then make the following changes:

Code: [Select]
Code:
0x491C19 (0x91C19 in exe)from: 11to:   120x492010 (0x92010 in exe)from: E8 7B 00 00to:   E9 1F 69 6D0x49208A (0x9208A in exe)from: 90to:   000x4922D9 (0x922D9 in exe)from: 24to:   250x492AB8 (0x92AB8 in exe)from: 90 90 90 90to:   5E 89 B6 000xB68934 (0x768934 in exe)from:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00to:80 7C E4 38 12 74 07 E8 50 97 92 FF EB 17 FF 3534 A2 D2 01 66 A1 3E A2 D2 01 50 55 51 E8 CA 8E92 FF 83 C4 10 E9 B7 96 92 FF 6A 12 8B 4C 24 308B 54 24 28 51 56 52 E8 60 91 92 FF 83 C4 10 8BF8 E9 58 9C 92 FF
 
Last edited:
From the looks of it, this must have been painful to figure out. Much more code than last time :-X

Anyway, looks good so far. The new attack removes exactly the same status effects as the normal Dispel does (just on the entire party), it can not be reflected, does magical damage, can be shelled, does not ignore Spirit, and in the case of Dispel, it now gives me a white "miss" instead of a green one if used on a target not under any positive status.

I can't think of any other possible side effects at the moment. Well done.
 
It's not that bad, I knew where all the stuff was.
The stuff for attack type 0x25 is mostly copied from the standard magic attack except it uses 0x12 instead of 0x00 in a function call.

Basically most magic attacks call a function to do most of the work (the cure attacks call a different one though).
All I did was add a new magic attack type of 0x12 (this is different from the attack type) which follows the same code path as 0x00 (a standard magic attack).

In the magic attack function, there's a call to an inflict status function, I hijacked this function call and made it jump to my code.
My code is then just a basic if statement in ASM:
if (magic_attack_type != 0x12) {
    inflict_status_function(caster_id, target_id, 1) - 1 means it's a magic attack, 0 is for physical attacks
}
else {
    cure_status_function(target_id, spell_power, status_word, status_dword)
}
 
Another thing: do you know in wich file can I change the items names ? I mean, not the battle items but all the others.
 
All item names are in kernel.bin, see section 40 listed in this post. More specifically it contains names and descriptions, the pointers to the names are all in section 9.

You have to be careful how you edit it because you can screw all the text offsets up if you're not careful, I'd suggest using Carbuncle if you can (Doomtrain doesn't support text editing at the moment).
 
I can't use Carbuncle because I'm editing the french version. I will make a back-up of my kernel.bin before any change to avoid a bad issue. Thanks ! :)
 
Hum OK, that's quite difficult. I think I will wait... you think Doomtrain will be able to edit texts in all languages ?
 
Hum OK, that's quite difficult. I think I will wait... you think Doomtrain will be able to edit texts in all languages ?
Sooner or later. We discussed it a bit. It may support all original languages except Japanese. This can take a while though.
 
No problem, I will wait. When you say "a while", you mean weeks or months ?
 
Status
Not open for further replies.
Back
Top