• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 19, 2024, 01:17:09 am

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


Question about Martial Arts/Brawler

Started by RiketzKarlom, September 11, 2013, 11:39:36 pm

RiketzKarlom

Could anyone direct me to a place that explains how damage from it is calculated, or point me to the right place in FFTPatcher to change it? I've been working on a balance patch, with a few other tweaks here and there for some friends, and it's the last big, glaring issue. I'm willing to bet Bravery is a factor in its damage, and that'd be the main component I'd want to take out. Ideally, I'd like the game to view PA as WA, then do the standard DA = PA*WE+Y formula, possibly even with a negative Y to keep it all in line.

Pride

By Martial Arts, I assume you mean the support which cannot be changed in the FFTPatcher, there should be a few ASMs that change it but won't be accessible if you're hacking wotl.
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

RiketzKarlom

Yes, I'm modding the PSX ISO, and I do mean the support skill. I poked around and found that the "Nothing" on the top of the items list is Bare-Handed, so that's a start. Just wish I knew -exactly- what formula Martial Arts/Brawler applies to unarmed damage, and if modifying the "Nothing" item could somehow make Monks a tad bit less one-shotty and broken.

Dokurider

Fists have the following formula:
[PA1 * (Br/100)] * PA2

When Martial Arts/Brawler is applied, PA2 is increased by 3/2. As you can tell, Bravery is the only thing keeping the fist formula from being absolutely exponential.

I would strongly suggest reading through the Battle Mechanics Guide. It goes into great depth on the various damage and success formulas, what effects them, and all kinds of useful information to someone wanting to modify FFT.

RiketzKarlom

So, if I'm reading this correctly, with 100 Brave, fist damage is PA to the second power. This presents a serious problem, as I'm trying to reduce Brave's sole function to be Reaction skill activation rate. This means I'd need to learn a bit about ASM hacking, and try and hard code a 50 Brave into that spot for all Fist damage to keep it on par with, say, Swords ranging around 20-25 WE?

Myrmidon

or download Raven's Tools.

there's a formula editor in there that lets you change weapon formulas.

You can make it, say, PA*25 to keep it in line with a sword with WP25.

I...honstly think that such a WP will be a little high, though. a PA of 10 is 250DMG. in Vanilla, I can easily get a PA of around 15, which is 375DMG - which could kinda 1-shot most things, given HP growth at the time.

RiketzKarlom

Quote from: Myrmidon on September 12, 2013, 04:18:15 pm
or download Raven's Tools.

there's a formula editor in there that lets you change weapon formulas.

You can make it, say, PA*25 to keep it in line with a sword with WP25.

I...honstly think that such a WP will be a little high, though. a PA of 10 is 250DMG. in Vanilla, I can easily get a PA of around 15, which is 375DMG - which could kinda 1-shot most things, given HP growth at the time.

Oh my, thank you VERY much for that suggestion! Having full control over formulas is spectacular!

Myrmidon

not ALL formulas, mind you - just weapon formulas.

believe me - I'd LOVE to have an easy way to have Nanoflare's formula with Faith calculations, but...no such luck...

RiketzKarlom

Oh, of course. I have a standard PA/MA growth of "60" across the board for all playable characters and classes, speed growth 100, etc. This way, the only differences in final stats come the class you are playing as, not your leveling path - much less of a headache in the long haul, and a lot more comfortable to newcomers. Accumulate's replaced with a modified Cheer Up, and granted to the "Special" units as well, however. This is why I was hoping to find an easy way to plug in a DMG=PA*(50/100*PA), and in the case of Brawler, 70/100. Of course, I've scaled back on WE in general, and changed the way a lot of them are wielded. 1.3 certainly had the right idea of turning off dual Knight Swords, and binding them to 2h Only. Just about everything else I could possibly hope for was right in FFTorgASM, with the only exceptions being the ability to scale Bare Handed and Brawler to appropriate power levels. Really, every other aspect of my current test play is going swimmingly, though I somehow managed to break TacText along the line. I strongly suspect it has something to do with adding in extra unit names and menu quotes where nothing was before, and things just not quite matching up anymore. Either way, I'm rambling now, will try and make heads or tails of some of these... microsoft office related spreadsheets and apps, though it's going to involve some serious hunting and downloading.

Pride

Quote from: Myrmidon on September 13, 2013, 01:50:25 pm
not ALL formulas, mind you - just weapon formulas.

believe me - I'd LOVE to have an easy way to have Nanoflare's formula with Faith calculations, but...no such luck...


Give me time to get my asm done.
  • Modding version: PSX
Check out my ASM thread. Who doesn't like hax?

Myrmidon

If you're making an easy-to-use damage formula changer, like Raven's weapon formula changer, you'll be my hero.

RiketzKarlom

I'll second that. Also noticed an ASM hack that changes Meliadoul's Mighty Sword skills to use the Knightsword/Katana damage formula, and cuts it in half. If options for fractions are possible, that'd be beyond handy. I'm especially looking forward to anything that can modify Martial Arts/Brawler, because it has gone untouched in every tool I've seen. Best of luck, Pride!

formerdeathcorps

September 16, 2013, 01:49:37 pm #12 Last Edit: September 16, 2013, 01:59:39 pm by formerdeathcorps
In the meantime, Riketz, you can try to make it so monk does not have martial arts innate and apply the ASM that removes the skillset hard-coding for Martial Arts (which pokeytax wrote and I just fixed for Jot5).  Another idea would be to apply the weapon XA hack that does PA * Br% * Naked_PA so fist damage doesn't stack nearly as much.  In fact, Naked_PA * PA (assuming 100 brave and martial arts) ~ PA * WP (assuming damage setup and ATKUP) using vanilla growths and multipliers (though your patch may be different).

Myrmidon, Riketz, please list what kinds of formula changes you'd like to see.  Be as specific and as thorough as possible.  I'm working on a formula hack and I'd like to take suggestions on what other people would like to see, but I'd rather code it all at once than patch my entire code multiple times to address new feature requests (which wastes time and increases the likelihood for error).
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

Myrmidon

September 16, 2013, 03:28:50 pm #13 Last Edit: September 16, 2013, 05:01:30 pm by Myrmidon
Dmg_B(PA*(WP+Y)) 100% Status - Swordskill, but with Brave

Dmg_F(MA*(WP+Y)) 100% Status - Same as above, but with Faith

Dmg_F((MA+Y)/2*MA) - Would be amazing for making scaling spells

Dmg_B((PA+Y)/2*PA) - Again - scaling physical skills. - Possibly 2/Naked for this and above, for scaling purposes.  Will test.

Dmg_((MA+Y)/2*PA) - Opposite of Geomancy - could come in handy

Heal_(Y)%  100% Add Status on Caster  - would be great for recreating Sabin's Spirallier

Generic: Set_Skeleton: Hit(MA+X)%  - would be cool for a Necromancer skill, especially if Invite can be tacked on, and/or it can only target KO'd targets.  Don't know how easy/hard it would be, though.

Undead: Heal_(Y)% 100% Add Status - Again, would be cool for a Necromancer

Dmg_((PA+Y)*PA/2) #Hit(Rdm(1,(X/SP)) - A basic (?) multi-hit formula.  More hits based off unit's speed.

Dmg ((100-CasB)*(100-TarB)*(WP+X)*PA) - Remember the Chicken Knife?  Would also work fine without calculating opponent's Brave.

Equipped:Break Dmg_(MA*Y) - Magic-oriented break skills.  Usable for things, like Acid Breath on a dragon that dissolves armour.

Equipped:Break Dmg_(PA*Y) - Again, to make break skills for monsters.

Dmg_(MA*Y) DmgCas_(MA*Y/X) - Bloodcasting

Dmg_F(MA*Y) DmgCas_F(MA*Y/X) - Bloodcasting...with Faith!

Dmg_F((MA+Y)/2*MA) DmgCas_F(((MA+Y)/2*MA)/X) - because I'm horrible people.  I still like it, conceptually, though.

HealMP_(CasMaxMP*1/5) DmgCasMP_(CasMaxMP*1/5) - give MP to an ally.  not much explanation needed.

Hit_B(PA+X)% - again, I like the idea of being affected by Brave

Dmg_(CasMaxHP-CasCurHP) Hit_(MA+X)% - shock needs accuracy issues if it's gonna be accessible to everyone

Dmg_(CasCurHP) - not as much for a skill, but as a skill to be placed on a weapon as a different damage formula.

DmgCas_(PA*Y) HealMP_(PA*Y) - I considered having this as an MA skill, since it's obviously for mages...but I think a Wizard would kill itself very quickly using it that way...

Honestly, I just really like the idea of using Brave to calculate physical skills effectiveness, and Faith for magic effectiveness.  Kinda like the whole Fury concept, but not including weapons.

I'd also like to see more Speed formulas, but any examples elude me for now.  It makes me a little sad that speed is only used for Aim: Arm/Leg, Seal Evil, Stealing and Throwing.  Something like Dmg_((SP+Y)/2*MA) might be neat for a continuous caster or something, though.

aaand I think I'm going overboard with ideas, here.  Like, seriously overboard.  I should likely stop.

formerdeathcorps

September 16, 2013, 09:52:51 pm #14 Last Edit: September 23, 2013, 04:54:57 pm by formerdeathcorps
This is more "overboard" for you than it is for me.  Experience from making my patch tells me that this much variety in the damage formulas is actually wasteful because you end up with a huge variety of formulas that mostly have very similar outputs.  That being said, because most of your formulas are actually all very similar, I can address all requests other than necromancer and Sabin mimicry with:

(STAT1 +/- C) * [STAT2 * (D + 1) / 128] * (Br% or Fa%); Optional: Break Stuff, Optional: Recoil

Required:
0) A brave flag for damage
1) A faith flag for damage
2) An extra byte table of 736 bytes for the above D and O(ptional) values
3) A flag for recoil
4) A flag for breaking gear
5) A flag for affect MP
6) A flag for toggling healing/damage
7) A flag for toggling P/M-EV
8) A flag for toggling Physical/Magical Multipliers
9) X upper4bits: (STAT1---choose from PA, MA, SP, WP, Naked_PA, Naked_MA, Naked_SP, LVL / 9 + 4, (PA + MA) / 2, (PA + SP) / 2, (SP + MA) / 2, (MA + LVL / 9 + 4) / 2, (PA + LVL / 9 + 4) / 2, (SP + LVL / 9 + 4) / 2, 128, 1, not having a weapon defaults to Naked_PA)
A) X lower4bits: (STAT2---choose from PA, MA, SP, WP, CascurHP, CasmaxHP, CasmaxHP - CascurHP, CascurMP, CasmaxMP, CasmaxMP - CascurMP, TarcurHP, TarmaxHP, TarmaxHP - TarcurHP, TarcurMP, TarmaxMP, TarmaxMP - TarcurMP; STAT2 is affected by damage multipliers, not having a weapon defaults to PA * Br%)
B) Signed Y = C
C) D = (D + 1) / 128 multiplier
D) O upper3bits: (Choose from Break: Weapon, Shield, Helm, Armor, Accessory)
E) O middlebit: (Interchange formula)
F) O lowest4bits: (Recoil = Output * [lower4bits + 1] / 16)

The interchanged formula is
Accuracy = (STAT1 + C) * (Br or Fa)%
Effect = [STAT2 * (D + 1) / 128]

Most of these ideas were in the planning phase of my formula hack anyways; it's helpful to flesh out my ideas for what others may want.
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

RiketzKarlom

(STAT1 +/- C) * [STAT2 * (D + 1) / 128] * (Br% or Fa%); Optional: Break Stuff, Optional: Recoil

Looks pretty great, though I'd still like the ability to take Brave and Faith out of the formula completely.
Only other idea for a formula I'd come up with would be :

+MA_(Y) NS NE

Having a magic equivalent to Accumulate could be a really neat trick for a hasted White Mage or Summoner with Short Charge to take advantage of, for example. I imagine it's possible, since non-permanent MA boost exists within Sing.

formerdeathcorps

September 23, 2013, 04:53:46 pm #16 Last Edit: November 26, 2013, 03:38:10 pm by formerdeathcorps

005C0508
00000000


1980033C
902D638C
00000000
04006294
00000000
40100200
040062A4


D4FFBD27
0800B0AF
0C00B1AF
1400B2AF
1800B3AF
1000BFAF
1980123C
D6385396
0680013C
C0981300
21083300
F0EB2124
06003194
04003094
00012232
05004010
982D538E
4421060C
00000000
02000010
00000000
6E21060C
1C00B4AF
E4004014
942D548E
F9384292
06000534
0F004430
1B008500
12300000
10180000
0300C014
FFFFC624
03000010
21386002
21388002
1100C014
2800E524
01006130
02002010
42180300
0400A524
04006010
FFFF6324
07006010
0200A494
03000010
0000A694
03000010
2120C000
00000000
23208600
16000010
CE3844A6
10006010
FFFF6324
10006010
FFFF6324
F9FF6010
0E00A490
02394692
FCFFA390
F5FFC014
2120C000
19008300
12200000
64000334
00000000
1B008300
EEFF0010
12200000
ECFF0010
0F00A490
EAFF0010
1000A490
F0004230
82100200
22008392
09000434
1B006400
1580043C
21204400
5871828C
12180000
08004000
04006324
98711580
A0711580
A8711580
B0711580
B8711580
C0711580
C8711580
D0711580
D8711580
E8711580
F0711580
F8711580
00721580
08721580
10721580
1C721580
25000010
01000434
23000010
80000434
21000010
21206000
1F000010
31008492
1D000010
32008492
1B000010
36008492
19000010
37008492
17000010
38008492
02394592
00000000
1300A014
2120A000
11000010
30008492
36008592
0B000010
37008492
09000010
38008592
07000010
36008492
05000010
21286000
03000010
37008492
21286000
38008492
00000000
21208500
42200400
D6384596
1580033C
40280500
21186500
2000B5AF
2400B6AF
006C7594
D03844A6
CE384396
0010B632
0400C012
FA384292
CE3844A6
900163A6
D03842A6
F7384392
F3384592
04394492
0400A230
02004010
25B0C502
25186400
FF17060C
F73943A2
03002432
15008010
02008430
09008010
00000000
8118060C
00000000
C718060C
00000000
1819060C
00000000
0B000010
00000000
1518060C
00000000
9518060C
00000000
B318060C
00000000
DB18060C
00000000
3E19060C
00000000
0010C232
04004010
D0384496
CE384396
08000010
21186400
FA384382
00000000
20208300
0200801C
CE384396
01000424
D03844A6
5912060C
CE3843A6
0010C232
05004014
00040532
5A19060C
00000000
05000010
CE384396
CE384496
90016396
0200A010
900164A6
541C060C
CE3843A6
F3384292
00000000
80004230
0F004010
0010C132
90016296
24006392
10270434
19004300
12100000
24008392
00000000
19004300
12100000
00000000
00000000
1B004400
12100000
900162A6
07002010
21184000
441D060C
00000000
8C016292
CE384396
09004010
00000000
E803622C
02004014
00000000
E7030324
B41B060C
900163A6
FE1B060C
00000000
2000B58F
2400B68F
0800B08F
0C00B18F
1400B28F
1000BF8F
1800B38F
1C00B48F
0800E003
2C00BD27



We now stand at a crossroads.  The above plans can raise mechanical issues that Square never had to deal with.
1) Two Hands: How should it apply?  Should it apply to any formula with WP, any formula that uses weapon range / weapon strike, or should it require both?  Of course, staying true to vanilla (only when ATTACK or CHARGE) is an option as well.  (Be as precise as possible.)
2) Healing Spell: How should it apply if it is both elemental and undead reverse?  In other words, if it hits an undead target that absorbs the element, what should we do?
3) Recoil vs. Drain HP: If I drain the HP of an non-undead target but my spell deals recoil to myself, what applies first?  Or....should I simply sum the two effects and only perform one effect on myself?
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

secondadvent

Quote from: formerdeathcorps on September 23, 2013, 04:53:46 pm
2) Healing Spell: How should it apply if it is both elemental and undead reverse?  In other words, if it hits an undead target that absorbs the element, what should we do?


Here's my take on how elemental and undead reversal should work together (this is using example values to show how things would work):

Healing spell:
Resistance = Normal healing/UR damage
Absorb = 150%/-50%
Neutral = 100%
Half = 50%
Null = 0%
Weak = -50%/150%

Healing causes damage to undead by default, but absorbing the element of the healing spell they'd be able to heal a small amount of the spell - absorbing the element cancels the damaging part, leaving the elemental absorption effect. Being weak to the element would cause additional damage due to the base damage from reversed healing and damage from the element itself.

Absorption spell:
Resistance = Normal damage/UR healing
Absorb = -50%/150%
Neutral = 100%
Half = 50%
Null = 0%
Weak = 150%/-50%

If you absorb the element used normally, you'd be able to override the absorb effect of the caster and instead absorb some of their health, while being weak to the element causes them to absorb more from you. Undead would combine the absorb effect from elemental affinity and from being undead to absorb more from the caster, while being weak would cancel out their undead "bonus" and leave them with their weakness, allowing the caster to absorb from the undead.

NOTE: Caster and target of absorption abilities both being undead could have a different effect, possibly reverting to normal absorb effect. Could also allow undead weak to the absorption attack's element to just halve the effect, still causing the undead to absorb from the caster (same goes for normal absorption of the element).


Feel free to hate on this idea, it's just how I see the element and undead reversal working together. I've also been away from this section of Battle.bin for a while, so forgive me if I'm forgetting stuff/derping hard.

formerdeathcorps

September 24, 2013, 03:09:44 am #18 Last Edit: September 24, 2013, 03:21:19 am by formerdeathcorps
SecondAdvent, from your above rules, you seem to be wanting an elemental multiplier to total damage where:
0) Base Multiplier is 1
1) Healing is classified as negative damage
2) Null multipliers Base Mult. by 0.
3) Halve halves Base Mult.
4) UR multiplies Base Mult. by -1 and will always occur before absorb or weak.
5) ABsorb multiplies Base Mult. by -0.5 if DMG > 0 and by 1.5 if DMG < 0.
6) Weak multiplies Base Mult. by -0.5 if DMG < 0 and by 1.5 if DMG > 0.

This all looks reasonable until we have a healing / drain spell on an undead who is both weak to and absorbs an element.  After UR flips the sign, what's next?  Do we always apply absorb first and then weak?  Vice-Versa?  Or do we manipulate the order to always damage the target?  Or should the target always be healed instead?
The destruction of the will is the rape of the mind.
The dogmas of every era are nothing but the fantasies of those in power; their dreams are our waking nightmares.

secondadvent

Quote from: formerdeathcorps on September 24, 2013, 03:09:44 am
This all looks reasonable until we have a healing / drain spell on an undead who is both weak to and absorbs an element.  After UR flips the sign, what's next?  Do we always apply absorb first and then weak?  Vice-Versa?  Or do we manipulate the order to always damage the target?  Or should the target always be healed instead?


The problem is that Absorb and Weak are essentially complete opposites, so combining them is a bit of an oddball (which I forgot, because derpy me didn't think about the two being able to coexist). Some possible outcomes could be:

1). Cancel both and make the resistance Neutral.

Sort of a "can't stack" situation, similar to haste and slow. Would be a way for a person to cancel their weakness by adding absorption equipment (rather than stacking effects), or a way to cancel an enemy's absorb effect by inflicting elemental weakness.

2). Combine them to enhance the effect of Absorb (higher elemental effect due to weakness, but still absorbing).

Since there's already a way to cause reduced absorption (Absorb + Half), this would be a way to potentially boost the Absorb effect (Absorb * 150% or so). Could be overpowered though, but could also be useful on enemy units.

3). Skip checking Weak if the unit has Absorb, since Absorb takes priority (or vice versa).

Not the best solution really, but would allow either the Weak effect or the Absorb effect, but not both. Kind of a way to prevent potential OPness of 2 while still allowing some effect, but I'd rather see one of the other options used.

4). Have the same effect as Absorb + Half, but able to stack with Half (potential quarter absorption).

Another possibility, this time making weakness essentially causing your Absorb "skill" to be reduced due to having lower affinity with the element... or something. Since weakness normally causes additional damage, having it reduce the beneficial side of things (essentially giving or taking 50% depending on the situation) could be a decent solution.


Overall, I think I'd prefer either 1 or 4 as possible solutions, with 1 probably being the easy way out while still having potential tactical use if there's weakness-inducing abilities like Oil, or to neutralize a weakness from one piece of equipment/the character's job with another piece of equipment. There's obviously lots of stuff that could be done with elements, and all of them have their ups and downs, so which one's the "best" is kind of hard to decide. :P