• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
July 03, 2020, 06:12:46 pm

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen/RetroArch is recommended for playing/testing, pSX is recommended for debugging.


Necromancer Job

Started by mpelos, March 17, 2017, 09:55:33 am

mpelos

I very interested in creating a Necromancer job in FFT, so I downloaded and started to use FFTPatcher but I have several issues.

First things first, the abilities for necromancer I want to create are:


Abilities
- Raise Dead -> Bring an enemy back from the dead
- Soul Leach -> Deal damage and transform the target into one of the walking dead
- Putrify -> Deal extensive damage to vile creatures
- Enslave Undead -> Take control of undead creature
- Terror -> Put the target in deep fear (critical + poison)
- Life Tap -> Consumes target HP to restore MP
- Death's Embrace -> Heal undead creatures and damage the liven
- Fell Blast -> Sacrifice own HP to deal extensive damage
- Drain Death -> Absorves death energy from the undead

Reaction
- Bone Armor -> Conjure bone from the dead to protect yourself
- Aura of Disease -> Cloud of infection which poison who touches

Support
- Dark Immunity (innate) -> Immunity to poison, death, undead and vampire.

Move
- Ignore Weather -> Traverse any marsh, swamp, or poisonous fen unimpeded by weather conditions. (remove from Oracle)


I'm starting with Raise Dead and my questions are:


  • as far I understand, it is only possible to hit dead units when the skill cancels the dead status, is that right?

  • Is it possible to a skill cancels the dead status and add Zombie status?

  • Modding version: PSX

Emmy

March 17, 2017, 10:09:09 am #1 Last Edit: March 18, 2017, 07:45:21 pm by Emmy
1. The skill must heal hp to be able to cancel dead and have everything working 100%.  Here is a formula I use for a skill that cancels dead and a few other statuses, and can be used on something whether alive or dead:


  <Patch name="Formula 3F - Fa(MA+X)% hit rate, Quadratic heal, 100% status">
    <Description>^^^^^</Description>
    <Location file="BATTLE_BIN" offset="12302c">
E8FFBD27
1000BFAF
6017060C
00000000
0022060C
00000000
09004014
00000000
3017060C
00000000
1622060C
00000000
D41C060C
00000000
AD1F060C
00000000
1000BF8F
1800BD27
0800E003
00000000
    </Location>
  </Patch>


2.  Currently not possible but sounds interesting enough for me to work on it.  Stay tuned! :)

**EDIT** Sorry, this is a lot harder than I initially thought it would be to make.  My first 8 or so attempts to code it failed. :(  It might still be doable, but not through any easy methods. :(
  • Modding version: PSX

Emmy

Got a working formula for this!  :)  Because the only way I was able to figure out how to do it meant coding the formula to hit twice, it has a few oddities.  For example, it'll work as a spell with 2 attempts to inflict the 2nd status on a unit that doesn't have the first one to cancel.  Or if the first attempt to cancel status 1 fails, it'll try to cancel status 1 again.  If this is undesired, sorry. :( 


  <Patch name="Formula 5D - Cancel status 1, inflict status 2">
    <Description>Replaces formula 5D. Does 1 HP healing (1 damage to undead) to allow for use to cancel dead. Accuracy = Fa(MA+200)%.  X and Y correspond to the status inflicted on the 2nd hit of the move.  X = 27 for status group 1, 28 for status group 2, etc.  Y = the statuses on the byte you want to be able to inflict on hit 2.  Do not use values that don't make sense for X or Y, or bugs will happen! :(  Status proc ID = the status you want cancelled in the first hit of the spell.  This will animate twice.  If unit doesn't have status 1 to cancel, it'll attempt to inflict status 2 twice.  If the first attempt at canceling status fails, it'll attempt to cancel it a 2nd time.</Description>
    <Location file="BATTLE_BIN" offset="128784">
98e81580
    </Location>
    <Location file="BATTLE_BIN" offset="f7898">
E8FFBD27
1000BFAF
19800A3C
942D428D
C8000334  <!-- c8 = 200 in accuracy calculation, change this if you like -->
37004290
D03843A5
CE3842A5
0022060C
00000000
1F004014
00000000
AD1F060C
00000000
19800A3C
902D4B8D
01000134
25006291
00000000
08004330
08006010
00000000
040061A5
80004234
250062A1
D41C060C
00000000
0E000010
00000000
F9384891
FA384991
21186801
000069A0
000061A1
08000234
250062A1
C912060C
21200000
03004014
00000000
C310060C
00000000
1000BF8F
1800BD27
0800E003
00000000
    </Location>
    <Location file="BATTLE_BIN" offset="eb314">
09005090
08004590
5D000334
03006514
00000000
BBF50508
02000234
76F50508
00000000
    </Location>
    <Location file="BATTLE_BIN" offset="1165cc">
C5480508
00000000
    </Location>
  </Patch>
  • Modding version: PSX

mpelos

Wow, this is very nice. If I understand, the ability occurs twice, the first cancel the dead status and the second applies the zombie effect, is that correct?
  • Modding version: PSX

Emmy

Yes.  The formula is coded to hit twice, ignoring the first part of the formula if it's invalid, and not doing the 2nd part of it if the first part is valid. What happens if everything hits is it'll cancel dead on hit 1, apply zombie on hit 2 (assuming you set up the statuses correctly).  If the attempt to cancel dead misses, it'll attempt a 2nd time to cancel dead and not attempt to inflict zombie.  If the unit is already alive, it'll attempt to inflict zombie twice.
  • Modding version: PSX

scorpiova

April 23, 2017, 12:31:09 pm #5 Last Edit: April 23, 2017, 01:17:57 pm by scorpiova
Hey there,

I am also building a Necromancer class. If I apply your patch above to my game - will the new formula show up in fftpatcher? Just wondering how I would apply it to a skill to work in-game.

Thanks :)

Oh - I think I understand now. It replaces one of the formula's which will then be accessible in fftpatcher?

My current skillset is below - i will add a skill to replace as "undead"

EDIT: Does anyone know which boxes in the ability that I need to check to make this work?
  • Modding version: PSX & WotL

bizenboat

Hello!

I'm finally getting into modding this game, and I'm trying to do the same thing as the OP here. I'm trying to use Emmy's patch, but I'm having trouble understanding the usage.

I applied the patch. I can get the spell to animate twice, and the raise / cancel dead part works. I can't figure out how how to use X and Y to cause a second status though. Can anyone translate for me?

"X and Y correspond to the status inflicted on the 2nd hit of the move. X = 27 for status group 1, 28 for status group 2, etc. Y = the statuses on the byte you want to be able to inflict on hit 2."

What is status group 1 and status group 2? What does "the statuses on the byte" mean? Can I cause more than one status with this patch? I can't find documentation that makes this clear to me. Also, I can't use letters in the X and Y fields so that implies I don't need to enter hex... unless I need to bypass FFTPatcher.
  • Modding version: PSX

bizenboat

Nevermind, I figured it out. To inflict Undead, X = 27, Y = 16

The table I needed was here: http://ffhacktics.com/wiki/Battle_Stats

For X:
0x01A7/0x1b - Attack's Status Infliction 1
0x01a8/0x1c - Attack's Status Infliction 2

0x1b = 27 in decimal. 0x1c = 28 in decimal. And so on. Those are the the "status groups" Emmy was talking about. X = the value in decimal.


For Y:
Status Infliction 1 (0x1b/27):
0x80 -
0x40 - Crystal
0x20 - Dead
0x10 - Undead
0x08 - Charging
0x04 - Jump
0x02 - Defending
0x01 - Performing

Undead is 0x10 here, which is 16 in decimal. So Y = 16.
You could inflict multiple statuses using bitwise math, but I think that only works if they're in the same status group? Someone please correct me if I'm wrong. For example, in status group 2, you can cause Darkness, Confusion, and Silence by using 0x20 + 0x10 + 0x08 = 0x38 = 56 in decimal.

I don't think I can cause Undead and Charm at the same time, which is what I wanted to do, but this is good enough for me!


Thanks for the help, me.




  • Modding version: PSX