Modding => PSX FFT Hacking => Topic started by: Emmy on January 03, 2016, 02:11:06 pm
Title: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on January 03, 2016, 02:11:06 pm
Sorry, no idea how my thread disappeared. :'( But here's the stuff used in Monster Tactics that was made by me or not documented on the site anywhere else, and hopefully better organized than it was before. Any questions on how to use anything, feel free to ask. :)
Reactions:
Multi-Reaction Deluxe (changes several reactions to cast an indexed ability on trigger):
<Patch name="Multi-reaction = damage trigger"> <Description>Gives multiple reactions a damage trigger, for the purpose of rewriting their vanilla effects to do something else.</Description> <Location file="BATTLE_BIN" offset="125c64"> DC470508 00000000 </Location> <Location file="BATTLE_BIN" offset="eaf70"> 1980043C 982D848C 00000000 8E008390 00000000 04006230 03004010 00000000 A233060C C3010434 02006230 03004010 00000000 A233060C C4010434 8D008390 00000000 04006230 03004010 00000000 A233060C BB010434 1C330608 00000000 </Location> </Patch>
This gives a damage trigger to slots: 0x01b1, 0x01c4, 0x01c3. 0x01c3 is currently bugged though. :(
Move Arrow Guard/Blade Grasp to support slots:
<Patch name="Moves Arrow Guard/Blade Grasp to support abilities"> <Description>Arrow Guard and Blade grasp are in equip shield and equip armor slots.</Description> <Location file="BATTLE_BIN" offset="125ABC"> 8F004390 00000000 80006230 05004010 40006230 </Location> <Location file="BATTLE_BIN" offset="1260c8"> 00000000 00000000 00000000 00000000 </Location> <Location file="BATTLE_BIN" offset="126198"> 00000000 00000000 00000000 00000000 </Location> </Patch>
Moves Finger Guard to support slot:
<Patch name="Moves Finger Guard to support abilities"> <Description>Finger Guard support in Equip Sword slot instead of reactions.</Description> <Location file="BATTLE_BIN" offset="121324"> 8F00A290 00000000 20004230 </Location> <Location file="BATTLE_BIN" offset="121384"> 00000000 00000000 00000000 00000000 </Location> </Patch>
Disables Catch's slot:
<Patch name="Disables Catch"> <Description>Useful if you are replacing Catch with something else.</Description> <Location file="BATTLE_BIN" offset="12145c"> 00000000 00000000 </Location> <Location file="BATTLE_BIN" offset="124f10"> 00000000 00000000 00000000 00000000 00000000 </Location> </Patch>
Moves Abandon to Support:
<Patch name="Moves Abandon to support abilities"> <Description>Abandon support in Equip Katana slot instead of reactions.</Description> <Location file="BATTLE_BIN" offset="11E3A8"> 8F004290 00000000 10004230 </Location> </Patch>
Meatbone Slash mimics range and animation of other ability:
<Patch name="MBS mimics range and animation of other attack"> <Description>Keeps its original effect (unevadable counter in amount of max hp), but uses several properties of attack indexed here.</Description> <Location file="BATTLE_BIN" offset="1172d4"> 33000534 0A010634 </Location> </Patch>
WG Hardcoding removal:
<Patch name="WG hardcoding removal"> <Description>Removes hard coding on Weapon Guard?</Description> <Location file="BATTLE_BIN" offset="11dfac"> 00000000 00000000 00000000 00000000 </Location> </Patch>
Rough Skin, PA Save, MA Save, Speed Save, Regenerator, Static, Decay:
<Patch name="Using the screwed up slots"> <Description>Moves PA Save, MA Save, Speed Save, Regenerator to Weapon Guard, Finger Guard,
Uses up a bunch of slots that can't be used in any other way.
Desperation (Cancel Cursed or inflict positive status in critical):
<Patch name="MP Restore change to cancel/inflict statuses"> <Description>Changes MP Restore to Cancel Cursed (if unit is inflicted with cursed), and if unit is not inflicted with Cursed, will inflict on it Float, Transparent, Reraise, Regen, Protect, Shell, Haste, Mist.</Description> <Location file="BATTLE_BIN" offset="1240d8"> 21200000 1980033C 902D638C 02000234 210062A0 70000234 1D0062A0 79000234 1C2C0608 1E0062A0 </Location> </Patch>
CT Save:
<Patch name="Brave up = CT Save (+20 CT, Countergrasp trigger)"> <Description>A variation of Pokeytax's boost XX by YY</Description> <Location file="BATTLE_BIN" offset="124090"> 94000234 862C0608 130062A0 </Location> </Patch>
Arcane Quickening (MP Trigger = Quick):
<Patch name="Faith up = Arcane Quickening"> <Description>Casts quick on reaction</Description> <Location file="BATTLE_BIN" offset="12409c"> 1980033C 902D638C FF000234 862C0608 130062A0 </Location> </Patch>
Fixed Override:
<Patch name="Fixed override problem - Allows better stacking of reactions"> <Description>Can use additional reactions in entd. Innate reactions in entd no longer override reactions added in entd. Originally made by FDC, I fixed typo.</Description> <Location file="SCUS_942_21" offset="4C050"> 00000000 </Location> </Patch>
Originally made by FDC, but I fixed the typo in the original hack. Placed here so it doesn't get buried.
Support/Movement abilities:
Flee:
<Patch name="Silent Walk becomes Flee - FIXED for branching/load issue"> <Description>Add 4 move when unit is in critical. Originally written by FFMaster FIXED thanks to Raijinili!!</Description> <Location file="BATTLE_BIN" offset="10D860"> ED600508 </Location> <Location file="BATTLE_BIN" offset="F13B4"> 95002292 00000000 02004230 07000210 3A003092 5A002292 00000000 01004230 02000210 00000000 04001026 1AD20508 00000000 </Location> </Patch>
Originally written by FFMaster, Fixed by Raijinili. Placed here so it doesn't get buried. :)
Combined with the Weapon proc rate code so that both abilities work.
Critical Hit rate x2:
<Patch name="Blank 01E1 = Critical hit x2"> <Description>Critical hit on unit with support 01E1 increased from 6.25% to 12.5%</Description> <Location file="BATTLE_BIN" offset="11F504"> 78770508 00000000 </Location> <Location file="BATTLE_BIN" offset="F6DE0"> 1980023C 942D428C 00000000 92004290 00000000 10004230 05004010 08000534 B63B060C 00000000 43190608 00000000 04000534 B63B060C 00000000 43190608 00000000 </Location> </Patch>
Disables Secret Hunt/Train:
<Patch name="Disables Secret Hunt/Train slots"> <Description>Useful if you are writing them over with something else. Frees space between 0x00187ca0 - 0x00187eb0 (battle bin).</Description> <Location file="BATTLE_BIN" offset="124988"> 00000000 </Location> </Patch>
Sicken (all physical attacks apply Poison in addition to regular effects):
Disables all Equip X Support slots and Female only equips:
<Patch name="Disables all equip support abilities"> <Description>Disables the effect of all "Equip X" support abilities/Female only equips.</Description> <Location file="SCUS_942_21" offset="4B178"> 00000000 </Location> <Location file="SCUS_942_21" offset="4B2A0"> 00000000 </Location> <Location file="SCUS_942_21" offset="4DF18"> 00000000 </Location> </Patch>
2 Swords Penalty:
<Patch name="2 Swords Penalty"> <Description>3/4 damage per hit on units with 2 swords. Affects all abilities with Formulas 01- 07, no effect on other physical formulas.</Description> <Location file="BATTLE_BIN" offset="11EF80"> 30420508 00000000 </Location> <Location file="BATTLE_BIN" offset="E98C0"> 1980023C 942D428C 00000000 91004290 00000000 01004230 0B004010 00000000 1980023C CE384284 00000000 40180200 21186200 C2170300 21186200 83180300 1980013C CE3823A4 1980023C E2170608 CE384224 </Location> </Patch>
<Patch name="Move XP Up = Move PA up"> <Description>Doesn't display as an icon, otherwise works!</Description> <Location file="BATTLE_BIN" offset="126e20"> 1980033C 902D638C 81000234 BD370608 140062A0 </Location> </Patch>
Move Speed Up:
<Patch name="Move JP Up = Move Speed up"> <Description>Doesn't display as an icon, otherwise works!</Description> <Location file="BATTLE_BIN" offset="126e88"> 1980033C 902D638C 81000234 BD370608 120062A0 </Location> </Patch>
<Patch name="Disables Gained XP Up Slot"> <Description>Useful if you want to use the slot for something else.</Description> <Location file="BATTLE_BIN" offset="1266b8"> 00000234 </Location> </Patch>
Shed Skin (Sheds negative status at the end of each turn):
<Patch name="Gain XP Up = Shed Skin"> <Description>Sheds negative status at the end of turn, fa/200% accuracy.</Description> <Location file="BATTLE_BIN" offset="EBC70"> 90000392 00000000 20006230 1C004010 00000000 5C000592 00000000 4000A530 1700A010 00000000 26000592 00000000 1300A010 00000000 3378010C C8000434 0F004014 00000000 1980033C 902D638C 80000234 200062A0 BE000234 210062A0 8A000234 220062A0 86000234 230062A0 3D000234 240062A0 08000234 250062A0 1980023C 902D428C 14360608 00000000 </Location> <Location file="BATTLE_BIN" offset="126844"> 1C4B0508 00000000 </Location> </Patch>
Marvel Scale (decreased damage taken when Statused), Guts (increased damage dealt when statused):
<Patch name="Gained JP Up = Marvel Scale, Jump+2 = Guts"> <Description>A unit with Marvel Scale takes 1/2 damage if it has a negative status, a unit with
<Patch name="Disables Ignore Height, Any Ground, Any weather"> <Description>Disables these so that another ability can be written in their slots</Description> <Location file="BATTLE_BIN" offset="10d774"> 02000010 </Location> <Location file="BATTLE_BIN" offset="10d7b8"> 04000010 </Location> <Location file="BATTLE_BIN" offset="10d828"> 03000010 </Location> </Patch>
Misc:
Remove HP/MP Cap:
<Patch name="Remove HP Cap"> <Description>All things cap at 65535 instead of 999 regardless of flags/equipment.</Description> <Location file="SCUS_942_21" offset="4c088"> FFFF0E34 </Location> <Location file="SCUS_942_21" offset="4ce04"> FFFF1034 </Location> </Patch>
<Patch name="Critical = 1/4"> <Description>Critical status applies at 1/4 hp instead of 1/5</Description> <Location file="BATTLE_BIN" offset="125344"> 00000000 00000000 00000000 </Location> <Location file="SCUS_942_21" offset="4DF88"> 00000000 00000000 28002396 00000000 </Location> </Patch>
Undead always rerise, Treasure disabled:
<Patch name="Undead always rerise, Treasure disabled"> <Description>First part makes undead always rerise. Second part removes treasure.</Description> <Location file="BATTLE_BIN" offset="11C17C"> 00000000 </Location> <Location file="BATTLE_BIN" offset="11C1DC"> 00000000 </Location> </Patch>
Locks job wheel for standard monsters:
<Patch name="Locks job wheel/equip screen for standard monsters"> <Description>This means if you change the skillsets for any of the monsters from 5E onwards, it
works as a regular monster skillset in that job wheel, change ability, item screen no longer is
accessible. No more glitchy job wheel! :)</Description> <Location file="WORLD_WORLD_BIN" offset="40b94"> A2FF8424 4200842C </Location> </Patch>
Silly hardcoding removal (skillset 08):
<Patch name="Silly hardcoding removal, related to skillset 08"> <Description>If you use skillset 08 (charge) for anything other than charge, you want to use this
hack. This eliminates the hardcoding that causes characters to cancel their own spells by
<Patch name="Monsters can use attack"> <Description>Changes all monsters to be able to use Attack command.</Description> <Location file="BATTLE_BIN" offset="11A410"> 00000000 </Location> <Location file="BATTLE_BIN" offset="11A424"> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 </Location> </Patch>
Requires finding another way besides FFtactext (such as Xifanie's Tool) if you want to display skillset names instead of blank spots for monster skillsets.
Formulas:
See XML attached for these. (Sorry, text limit). All formulas, along with all code required to make formulas work is in the asmformulas.xml
XML's uploaded by request. These include other people's hacks too (it was written for my convenience in patching for my mod), but helpful to those who don't want to click on spoilers. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Atma on January 07, 2016, 11:38:38 pm
Nice formula edits! I like the idea of allowing the healing amount to scale better over the duration of the game. I want my personal mod to have all classes relevant throughout the game and most of the equipment. Definitely going to put these to use. Thank you. :D
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on January 20, 2016, 02:02:19 am
So, not sure why this isn't working the way i want it to.
You've got a problem here because r6 doesn't contain the attacking unit's data pointer anymore, as that was overwritten, so the wrong value is loaded here. As it happens, I think r6 is going to contain the number 16 (0x10) going into this statement, so you're loading the byte from memory at address 0x6a (0x5a + 0x10) and storing that in r6.
I would guess whatever value is loaded from 0x6a probably fails the subsequent check and so r3 is never doubled.
Edit: 16, not 2.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Argy on January 22, 2016, 10:00:02 am
Hi Emmy,
I hope you dont mind me posting here concerning your FLEE hack. When i tested it, it gave everyone plus four move. I also ran it with conflict checker to see if there were any other issues, but there wasnt. Has anyone else had this problem or it just me?
Cheers Argy
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: LastingDawn on January 22, 2016, 01:27:55 pm
This is extremely impressive work Emmy! This looks to go a decent way towards balancing some more difficult to balance aspects of FFT.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on January 22, 2016, 05:52:55 pm
Did you use this version? It sounds like an issue I had when I was trying to fix it but didn't understand how branches work. This version works perfectly for me :)
<Patch name="Silent Walk becomes Flee - FIXED for branching/load issue"> <Description>Add 4 move when unit is in critical. FIXED thanks to Raijinili!!</Description> <Location file="BATTLE_BIN" offset="10D860"> ED600508 </Location> <Location file="BATTLE_BIN" offset="F13B4"> 95002292 00000000 02004230 07000210 3A003092 5A002292 00000000 01004230 02000210 00000000 04001026 1AD20508 00000000 </Location> </Patch>
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Argy on January 23, 2016, 08:16:35 am
Emmy, thank you!! Works an absolute treat!! I have also taken your other reactions as well!! Keep up the great ASM work!! If your Monster talk double damage one works that would be amazing. :D
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on February 11, 2016, 01:01:16 am
Updated with a few requests. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on February 24, 2016, 03:25:38 am
Quote from: Argy on January 23, 2016, 08:16:35 am Emmy, thank you!! Works an absolute treat!! I have also taken your other reactions as well!! Keep up the great ASM work!! If your Monster talk double damage one works that would be amazing. :D
Got it to work finally. :) In the main post now.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Argy on February 26, 2016, 02:37:24 am
Emmy, great work on solving the hack. I am proper pleased, as this gives the community another viable support for their patches. Keep up the great work.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on February 27, 2016, 11:08:59 am
Updated with Multi-Reaction Deluxe! Thank you secondadvent for rewriting my code here so it works. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: CONMAN on February 27, 2016, 12:39:57 pm
Awesome work Emmy! Several reactions see little to no use in general- this goes a long way to fixing this!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on March 02, 2016, 02:05:29 am
Fixed the Blade Grasp/Arrow Guard moved to supports (no longer animates strangely). Fixed the Ability works as blade grasp for math skill flag (no longer breaks reflect). :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: DuxorW on March 08, 2016, 08:55:34 am
Very cool hacks, I'll definitely be trying these out :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Argy on March 09, 2016, 10:44:43 am
Emmy, loving that MP Poison and +5 speed action. It's also great how you give guidance in changing it as well. Thank you!!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: CONMAN on March 10, 2016, 06:14:42 pm
Unfortunately "Ability works as blade grasp for math skill flag" isn't working for me- I may have a conflict somewhere...at the moment battles won't start for me at all. This is unfortunate- I was going to combo this with "absorb used mp" for a sweet "Runic" skill...
However, the real reason for the post was to ask for a hack that I think would benefit many (especially considering the nature of your mod!). :oops: I've got to say I feel awkward asking for something- but I feel it could be really awesome!
Perhaps somewhere I missed a hack to add permanent status from a support... I was going to ask if you could use an used support (or just a crappy one) to automatically apply dark/evil-looking status....
Why? Because last night I remembered a spreadsheet made by Raven (I think secondadvent is credited) that allows the coloring of status effects to be altered...along with allowing status effects to alter the size of sprites... Hence Dark/Evil becomes GOLDEN/GIANT. Yes this status could just be tagged onto jobs themselves- but there is really only so many!
This could be used to make some fun secret/random super-monster battles by simply adding Golden/Giant and the ??? status to regular monsters.
The one downside is sprites start to get too big and begin to get "pixelly". The added benefit of giving them a color tint helps smooth them over.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on March 10, 2016, 08:46:30 pm
I originally tried to code Runic (which didn't work), and that's where that hack came from. If it blocks an attack, you won't absorb the MP from it. Try tying it to a support or move slot.
Also you can check if it's writing to the same location as something else with Conflict Checker (which is bundled with the newest fftorgasm).
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on March 16, 2016, 07:47:53 pm
Quote from: CONMAN on March 10, 2016, 06:14:42 pm Unfortunately "Ability works as blade grasp for math skill flag" isn't working for me- I may have a conflict somewhere...at the moment battles won't start for me at all. This is unfortunate- I was going to combo this with "absorb used mp" for a sweet "Runic" skill...
However, the real reason for the post was to ask for a hack that I think would benefit many (especially considering the nature of your mod!). :oops: I've got to say I feel awkward asking for something- but I feel it could be really awesome!
Perhaps somewhere I missed a hack to add permanent status from a support... I was going to ask if you could use an used support (or just a crappy one) to automatically apply dark/evil-looking status....
Why? Because last night I remembered a spreadsheet made by Raven (I think secondadvent is credited) that allows the coloring of status effects to be altered...along with allowing status effects to alter the size of sprites... Hence Dark/Evil becomes GOLDEN/GIANT. Yes this status could just be tagged onto jobs themselves- but there is really only so many!
This could be used to make some fun secret/random super-monster battles by simply adding Golden/Giant and the ??? status to regular monsters.
The one downside is sprites start to get too big and begin to get "pixelly". The added benefit of giving them a color tint helps smooth them over.
No clue if this'll suit your needs, but it changes the status inflicted by the Float movement ability:
<Patch name="Changes status inflicted by Float movement"> <Description>Default = Dark/Evil looking</Description> <Location file="SCUS_942_21" offset="4DCFC"> 4F002292 00000000 02004234 </Location> </Patch>
Change according to this, first bold number is the group, second bold number is status you want:
Unfortunately, I'm not too sure if this can be done outside the scus if this doesn't suit your needs.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: CONMAN on March 18, 2016, 11:35:20 am
Cool, thank you Emmy!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on March 20, 2016, 11:52:31 pm
I got a different version to replace Move +3 if you don't want to mess with the Float movement. This version requires my "Disable equip x/female equipment" hack because I coded it in that area. You can move it somewhere else in the scus if you disabled something else.
Bold numbers are the Status effect group, italics is the status you want. Can give any combination within the same group. Default here changes Move +3 to inflict undead status instead of granting move +3.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on April 04, 2016, 05:59:05 pm
Update - Bugfix on Move +3 grants Undead/buffs hack. Also added a couple formulas and a few r/s/m grants status. :P
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on April 28, 2016, 02:43:40 am
Updated with a monster m-ev hack. :) Currently don't know how to do this by class though. :(
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Xifanie on April 28, 2016, 03:48:45 am
It's actually very easy; you have all the variables there. You can just create a table with a byte for every job, and add the job ID to the start of the table. You have the address of the unit in r4, so just, for example (assuming you shift your code after the table): [indent=2]lbu r2, 0x0003(r4) //Load the job ID lui r1, 0x8015 addu r1, r1, r2 lbu r2, 0x2140(r1) [/indent] ...and bam, you got your custom M-Ev for that job ID.
Hopefully you can find me in chat when you'll look into this if you need any help.
It would also be nice to display the value properly on the status screen, but I couldn't fault you for giving up/not bothering, since the game kinda forces that display value to be 0.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on April 29, 2016, 02:04:27 am
**EDIT** Works now, hack in first post. :) Thanks Xifanie. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Adhelbert on May 17, 2016, 08:23:54 am
Hello Emmy ..
I have a small request and 2 quistions ..
Can you make hack to change Move +3/Jump +3 To add speed +1/+2 without disable equip x/female Hack ..
1)Does your hack "train inflict differnet status" Works without critical condition, (i want it to Inflict status always)
2)your "conditional support bundle" hack - if i want to replace (Eq. Spear/Axe) with JP/Exp Up slots, should i disable these abilities first, if yeah, Can you tell me how. - i want to remove the conditions, affects statuses instead of stats.
Sorry if i asked too much & thanks for the useful hacks :D
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on May 17, 2016, 10:11:57 am
The reason those hacks require disabling equip x/female equip hack is because it needed to be written in Scus. Scus doesn't have any free space normally - you have to create your own either by writing it over features you're not using or rewriting existing routines to be more efficient. I know some people have talked about how there's some sections of horribly inefficient code there, but rewriting them to be better is something I don't know how to do yet.
I made a new version of the train hack. It requires all 3 of the hacks mentioned in its description to work though, but it'll always inflict poison if the formula goes through the physical evade routine. Even if it doesn't deal damage! So be careful with what you give the ability to.
You'll have to disable jp/xp up slots first unless you want the ability to have both the vanilla and the new effect. Unless you're using them for something else, I'd suggest just pulling a blank slot for them instead. Here's a version using 2 blanks instead:
<Patch name="Blank 1 (Between Equip Change and Short Charge) = +5 speed in critical, Blank 2 (between Non-Charge and blank 3) = double speed while berserked"> <Description>Speed bonus removed when unit is no longer critical.</Description> <Location file="BATTLE_BIN" offset="11C964"> 4C420508 00000000 </Location> <Location file="BATTLE_BIN" offset="e9930"> 38003792 92002292 00000000 10004230 07000210 00000000 5A002292 00000000 01004230 02000210 00000000 0500F726 92002292 00000000 02004230 07000210 00000000 5A002292 00000000 08004230 02000210 00000000 40B81700 5B0E0608 00000000 </Location> </Patch>
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on May 18, 2016, 02:00:36 am
Updated with Move XP/JP up changes. :)
Unfortunately do not know how to change the display so that it mirrors reaction abilities or other move X ups (such as by displaying the sword and +1 like PA save does). However if you check the character screens, these abilities work. Still is better than the vanilla ones. :P
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Adhelbert on May 19, 2016, 09:55:52 am
Hi :D
Well thank you very much for the new version. It's good idea to use useless support abilities :)
1) does "train inflict different status" is the old Sicken hack, correct me cuz i'm little confused :?
2) i will ask again since you didn't mentioned it Can you remove the conditions (such as critical, Berserk) from "conditional Support bundle" hack
Thanks emmy for your help, i'm looking forward to Use your "Move XX up" hack :mrgreen:
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on May 19, 2016, 06:15:18 pm
Are you looking to just make something double speed always? :o The conditional bit is what makes these interesting in enemy formations.
To make Train = Sicken (always inflict poison on physical attacks) you need these hacks (all of them):
First one disables vanilla's effect, replacing it with adding poison instead of invite. Second one runs the poison effect throughout the physical routine, so that it applies to any physical attacks (even stuff like Earth slash or custom formulas, whether or not they deal damage to the target, as long as it touches the physical routine). The third one is required because I had to move the Transparent check to make both of those hacks work, and moving transparent happens in the third hack. Apply all 3 hacks and you get both Sicken and Arcane Focus. Hope that makes sense. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Fosil on May 19, 2016, 09:52:42 pm
I've a question, that I'm sure you can answer, as I'm delving into my own modifications:
When you say we can change the abilities that these ASM's index to--the 1 to 2 digit hex numbers you often bold or italicize--I still do not understand how it is done.
What I mean is, say for instance, we take your Meatbone Slash/Bonecrusher ASM...
<Patch name="MBS mimics range and animation of other attack"> <Description>Keeps its original effect (unevadable counter in amount of max hp), but uses several properties of attack indexed here.</Description> <Location file="BATTLE_BIN" offset="1172d4"> 33000534 0A010634 </Location> </Patch>
Change the attack indexed here by changing the italics (a skillset that contains that attack) and bold (the attack you want to mimic). Default here is Choco Ball. Meatbone Slash will use the animation, range, radius, etc. of the attack indexed here instead of that of the standard attack. Useful if you want to make MBS more useful on monsters/bosses, or if you want to prevent double attacking with it.
I understand that the '0A01' is the reverse hex pointing to the Chocoball ability. But as for the '33', I do not understand what "skillset of the attack" this is linking to. Skillset 33 links to 'Battle Skill' which does not contain anything related to Meatbone Slash or Chocoball, right?
Or, for example your 2x outgoing damage while in critical ASM, has 2 bits of hex that reference to one ability, Monster Talk/Beast Tongue, and I do not understand how those two separate hexes link to the one support skill.
Also! After explaining, could you pretty please edit your first-base post with your ASMs to include more bold and/or italic markings to indicate the hex we would change for our own ASM modifications? (Skillset/Ability/Number hex pointers)
Can you please shed some light on these? Again, thank you!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on May 19, 2016, 10:10:21 pm
I have a boss chocobo which uses skillset 33, and Missile (Choco ball in vanilla) in my mod. Wasn't sure if monster skillsets would somehow screw that up so thought it was safer to use that as the skillset when I tested it. You can change that to whatever skillset contains whatever ability you are using.
C/p from Data locations:
0x008b: Reactions 1 0x80 - PA Save 0x40 - MA Save 0x20 - Speed Save 0x10 - Sunken State 0x08 - Caution 0x04 - Dragon Spirit 0x02 - Regenerator 0x01 - Brave UP 0x008c: Reactions 2 0x80 - Face (Faith) UP 0x40 - HP Restore 0x20 - MP Restore 0x10 - Critical Quick 0x08 - Meatbone Slash 0x04 - Counter Magic 0x02 - Counter Tackle 0x01 - Counter Flood 0x008d: Reactions 3 0x80 - Absorb Used MP 0x40 - Gilgame Heart 0x20 - Reflect 0x10 - Auto Potion 0x08 - Counter 0x04 - 0x02 - Distribute 0x01 - MP Switch 0x008e: Reactions 4 0x80 - Damage Split 0x40 - Weapon Guard 0x20 - Finger Guard 0x10 - Abandon 0x08 - Catch 0x04 - Blade Grasp 0x02 - Arrow Guard 0x01 - Hamedo 0x008f: Support 1 0x80 - Equip Armor 0x40 - Equip Shield 0x20 - Equip Sword 0x10 - Equip Katana 0x08 - Equip Crossbow 0x04 - Equip Spear 0x02 - Equip Axe 0x01 - Equip Gun 0x0090: Support 2 0x80 - Half of MP 0x40 - Gained JP-UP 0x20 - Gained EXP-UP 0x10 - Attack UP 0x08 - Defense UP 0x04 - Magic Attack UP 0x02 - Magic Defense UP 0x01 - Concentrate 0x0091: Support 3 0x80 - Train 0x40 - Secret Hunt 0x20 - Martial Arts 0x10 - Monster Talk 0x08 - Throw Item 0x04 - Maintenance 0x02 - Two Hands 0x01 - Two Swords 0x0092: Support 4 0x80 - Monster Skill 0x40 - Defend 0x20 - Equip Change 0x10 - 0x08 - Short Charge 0x04 - Non-Charge 0x02 - 0x01 - 0x0093: Movement 1 0x80 - Move +1 0x40 - Move +2 0x20 - Move +3 0x10 - Jump +1 0x08 - Jump +2 0x04 - Jump +3 0x02 - Ignore Height 0x01 - Move-HP UP 0x0094: Movement 2 0x80 - Move-MP UP 0x40 - Move-Get EXP 0x20 - Move-Get JP 0x10 - Cannot Enter Water 0x08 - Teleport 0x04 - Teleport 2 0x02 - Any Weather 0x01 - Any Ground 0x0095: Movement 3 0x80 - Walk on Water 0x40 - Move in Water 0x20 - Move on Lava 0x10 - Move Underwater 0x08 - Float 0x04 - Fly 0x02 - Silent Walk 0x01 - Move-Find Item
91 is the group where you can find Monster Talk, and 10 is the hex that refers to it specifically. Which other things are you looking to modify?
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Fosil on May 19, 2016, 11:04:46 pm
Ah hah! Derp. That completely explains it! I should have known, being I'm familiar with the similar tables for the statii. Thank you!
I have no further questions, at the moment!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Adhelbert on May 20, 2016, 07:16:53 am
Quote from: Emmy on May 19, 2016, 06:15:18 pm Are you looking to just make something double speed always? :o The conditional bit is what makes these interesting in enemy formations.
I know it's not fun to make the support always double the speed and it make the game unbalanced. I just wanted to use this hack to grants good status, Or grants immunity to bad status.
Quote from: Emmy on May 19, 2016, 06:15:18 pm Second one runs the poison effect throughout the physical routine, so that it applies to any physical attacks (even stuff like Earth slash or custom formulas, whether or not they deal damage to the target, as long as it touches the physical routine).
I thought it only add status if you use "attack" command. :(
However, thanks for clarification :D
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on July 16, 2016, 04:27:18 pm
Updated with a couple new formulas, and a bugfix for monster talk = 2x damage in critical. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: nitwit on July 16, 2016, 07:15:13 pm
You're doing god's work, Emmy.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on July 26, 2016, 02:35:52 am
Updated with several things: Shed Skin, Disable Secret Hunt/Train, Disable Gain XP Up, etc.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on August 13, 2016, 01:56:07 pm
So I'm still not 100% sure how the reaction flags work (they're largely undocumented), but these are my findings, tested with my Multi-Reaction Deluxe:
01 - Ability name appears, does nothing else 03 - Ability name appears, does nothing else 05 - Reacts with ability on self. Seems to check if the caster is within range of the ability before casting ability on self. Only targets self. No clue why. 06 - Ignores custom code 07 - Ignores custom code 09 - Reacts with ability on caster 0a - Unrelated effect (heals caster for 0 mp?) 0b - Unrelated effect (heals caster and surrounding targets in the AOE of indexed ability for random amounts of mp?) 0c - Ignores custom code 0d - Reacts with ability on self. Seems to check if the caster is within range of the ability before casting ability on self. Only targets self. No clue why. 0e - Ignores custom code 0f - Ignores custom code 10 - Ability name appears, does nothing else 19 - Reacts with ability on caster 1d - Reacts with ability on self. Seems to check if the caster is within range of the ability before casting ability on self. Only targets self. No clue why. 29 - Reacts with ability on caster 2d - Reacts with ability on self. Seems to check if the caster is within range of the ability before casting ability on self. Only targets self. No clue why.
Since I'm not sure if there's hard coding elsewhere related to these flags, stick with using 29 for reacting with ability on caster. 0d seems to work if you want a reaction that casts an ability on the user.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Ashiel on August 24, 2016, 11:04:03 pm
Quote from: Emmy on January 03, 2016, 02:11:06 pm This gives monsters the same skillset appearance they had before if given a standard monster skillset, but if you check under Act, they can use the standard attack command in addition to their primary set. If you force equip a secondary set here, they can also use that too. Currently monster skillset names appear as blank under the act screen (not sure if there's a fix to that).
After reading this I have a theory, but I've not tested it yet.
If you open FFTacText, select "Skillset Descriptions", towards the bottom you'll find monster skillsets (entry 176+). I'm fairly certain that if you place text for them, their skillset will appear as something other than a blank selectable in the menu. However, another issue seems to be present even if that works. The monster skillset entries only go from Chocobo through Vampire, so unless some of the many blank entries route to other monsters, I'm not sure how to assign them descriptions.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: 3lric on August 25, 2016, 12:14:04 am
Tactext sucks. Use Xif's FFT Text Editor.
http://ffhacktics.com/smf/index.php?topic=11204.0
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Ashiel on August 25, 2016, 03:22:01 am
I'll try it! Unfortunately, if it won't run in OpenOffice I'm just SOL. :P
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on September 18, 2016, 04:22:25 pm
If you want to use both the 2x damage in critical and the +50% damage vs. haste/reraise units supports, patch both of these instead of what is in the original post:
<Patch name="Blank Support after No charge gives unit 50% bonus damage on units that are Hasted or Reraised"> <Description>Rewritten to work with/depends on double damage in critical</Description> <Location file="BATTLE_BIN" offset="e9a00"> 1980013C 942D218C 00000000 92002390 00000000 02006330 18006010 00000000 1980043C 982D848C 00000000 5A008390 00000000 20006330 06006014 00000000 5B008390 00000000 08006330 0B006010 00000000 1980033C CE386384 00000000 40200300 21208300 C21F0400 21208300 43200400 1980013C CE3824A4 2B180608 00000000 </Location> <Location file="BATTLE_BIN" offset="e9aa0"> 1980023C 942D428C 00000000 92004390 00000000 02006330 18006010 00000000 1980043C 982D848C 00000000 5A008390 00000000 20006330 06006014 00000000 5B008390 00000000 08006330 0B006010 00000000 1980033C CE386384 00000000 40200300 21208300 C21F0400 21208300 43200400 1980023C CE3844A4 1980023C 942D428C 84180608 00000000 </Location> </Patch>
I'm sorry for any inconvenience caused by the 2 hacks being incompatible with each other. :(
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on October 29, 2016, 03:03:07 pm
I'm not sure what the best place for this is (there isn't a Maps board) so I put it on the end of my topic. I got Military Academy to function in battle. :) This map: http://ffhacktics.com/maps.php?id=24 It isn't perfect, since it's my first time using Ganesha. Also, I didn't add black walls to some sides so that it doesn't obstruct view too much.
Weird angles that are screwed up in the original map but fixed here:
(http://i.imgur.com/KJKM3nb.jpg)
(http://i.imgur.com/tt4TUVy.jpg)
(http://i.imgur.com/9cfIxFz.jpg)
Balcony is also now accessible to characters with Teleport or Fly. Railing is 9.5 high from the ground, balcony is 8 high; so a character needs those abilities.
Chapel of Orbonne fixed too! :)
Some slight visual bugs here and there (such as if a character overlaps the edge, or if you want to nitpick about places where I had to duplicate/replace blocks so that characters stand in the right spots), but otherwise playable. :)
(http://i.imgur.com/fYUAFxz.jpg)
**Edit** Also added the files that turn Dolbodar into a poison swamp map. No other changes have been made to that map, but it could be useful if you want another poison water map. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Timbo on October 29, 2016, 10:07:02 pm
These are great! I'll use that Dolbodar map for sure. Once upon a time Xifanie gave me some map files that were supposed to turn on the lights in the Deep Dungeon but they didn't work. You should consider looking into that.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on October 29, 2016, 10:22:21 pm
Just change in Attack.out to second state instead of first state. :) You need those files too.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on November 13, 2016, 03:17:07 pm
Old thread disappeared on me randomly. :'( I'm sorry for any inconvenience caused by it. Hacks are re-added now though. They are much better organized now; however are missing the old instructions I had for how to customize them, along with some of the older versions of hacks made before I wrote other ones that require both of them to work for my mod. If anyone would like my documentation on them because you want to customize what they do, or need help in doing so, feel free to ask in this thread. :)
**Edit** Xifanie added old post below, if you want the documentation on them. Thank you so much :) :) :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on November 13, 2016, 03:17:39 pm
Part of my goals for learning ASM is to create better stuff in general for monsters, due to relevance to my mod. This includes r/s/m and other abilities in general. I'm still very new at this.
Face up inflicts status:
<Patch name="Face Up inflicts status effect on self"> <Description>Changes Face Up to a clone of Regenerator, Sunken State, etc. instead of affecting a stat. Credit to Choto for helping me find this.</Description> <Location file="BATTLE_BIN" offset="1240A4"> 48000234 1C2C0608 1E0062A0 </Location> </Patch>
Another mod included an undocumented hack. Couldn't find the documentation here or elsewhere as to how it was done, or even who initially did the hack, but it changed Face Up to inflict Faith Status instead of its vanilla effect. Credit here goes to Choto for helping me find this, and whoever did the hack initially.
**Improved** Checks if status infliction is valid! :)
Directions for use: Default here is inflicting Regen and Haste status, however this can be changed by changing the bolded numbers. First bold number (48 here) is the status effects, and second bold number is the status effect group. Like other inflict status reaction abilities, you can make it inflict multiple statuses by adding together the numbers under the same group. Example: Regen + Haste = 48 first bold number, 1E second bold number. Use these tables:
<Patch name="Brave Up inflicts status effect on self"> <Description>Changes Brave Up to a clone of Regenerator, Sunken State, etc. instead of affecting a stat. Credit to Choto for helping me find this.</Description> <Location file="BATTLE_BIN" offset="124090"> 48000234 1C2C0608 1E0062A0 </Location> </Patch>
Same directions as the other hack. Default here is Regen/Haste.
MP Restore inflicts several status effects:
<Patch name="MP Restore change to cancel/inflict statuses"> <Description>Changes MP Restore to Cancel Cursed (if unit is inflicted with cursed), and if unit is not inflicted with Cursed, will inflict on it Float, Transparent, Reraise, Regen, Protect, Shell, Haste, Mist.</Description> <Location file="BATTLE_BIN" offset="1240d8"> 21200000 1980033C 902D638C 02000234 210062A0 70000234 1D0062A0 79000234 1C2C0608 1E0062A0 </Location> </Patch>
As description says. Replaces MP Restore's effect entirely, but still uses critical trigger. Will remove Cursed (if unit is cursed), and inflict all positive status effects if unit is not cursed. Due to the way it's coded (will check if all status infliction is valid at the same time as each other, and not in any particular order), will only remove cursed if unit is cursed and cursed is coded to block positive status effects. Can be changed to lift/inflict any 3 groups of status effects, keeping in mind that a character must be able to react to use this! Bold numbers are the status group, italics are the status effects within the group.
Face Up functions as Counter Tackle:
<Patch name="Face up -> Counter Tackle's effect"> <Description>Changes Face up to react with an ability like Counter Tackle. Keeps its original trigger (MP cost ability). Credit goes to secondadvent for helping me with this.</Description> <Location file="SCUS_942_21" offset="4F3D8"> 29 </Location> <Location file="BATTLE_BIN" offset="1173F4"> B1470508 00000000 </Location> <Location file="BATTLE_BIN" offset="EAEC4"> AE010534 04000512 21202002 0B000534 F7F80508 93000634 1980023C 9C2D4284 FFF80508 00000000 </Location> </Patch>
This changes Face Up to function like Counter Tackle (reacting with an ability). It keeps its original trigger. Ability referenced is in bold - change this to whatever you want, with the bytes reversed. For those who want to make this reference something other than Face Up, I'll explain how to the best I can:
The reaction ability flag (the thing in the Scus) for the one that you're using must be changed to 29. Change the offset of this to 4F3D0 + the hex referenced below.
In the larger block of hex, change the italics hex to reference the ability you want, with the bytes reversed.
There are limitations here though. Since the original triggers are kept, these abilities can't replace anything that doesn't actually have a trigger (such as Abandon). Referencing the blank ability requires the "blank reaction given damage trigger" below. Also, any ability that's already part of this routine can't be replaced either: http://ffhacktics.com/wiki/Main_reaction_routine%3F
What can pretty easily be replaced: Any of those stat up reactions, any reaction that casts a status effect, any critical trigger except Meatbone Slash, Blank ability (if you use the other hack I made), Gilgame Heart.
Multi-Reaction Deluxe:
<Patch name="Multi-Reaction Deluxe"> <Description>Changes several reaction abilities. Credit goes to secondadvent for rewriting my code so that it works. :)</Description> <Location file="SCUS_942_21" offset="4F3D8"> 29 </Location> <Location file="SCUS_942_21" offset="4F3DA"> 29 </Location> <Location file="SCUS_942_21" offset="4F3E0"> 29 </Location> <Location file="SCUS_942_21" offset="4F3E1"> 29 </Location> <Location file="SCUS_942_21" offset="4F3E5"> 29 </Location> <Location file="BATTLE_BIN" offset="1173F4"> 9C470508 00000000 </Location> <Location file="BATTLE_BIN" offset="EAE70"> 00000434 1580063C 40100400 2130C200 C01EC594 1980023C 9C2D4294 00000000 05004514 01008424 D01EC694 0B000534 F7F80508 21202002 0500852C F1FFA014 1980023C 9C2D4284 00F90508 0680013C </Location> <Location file="BATTLE_BIN" offset="EAEC0"> AE01B001 B601B701 BB010000 00000000 </Location> <Location file="BATTLE_BIN" offset="EAED0"> 0F002C00 12001600 1A000000 00000000 </Location> </Patch> This changes multiple reaction abilities (up to 8) to have similar functionality as Counter Tackle (casting an ability indexed here), but to keep their original triggers. Default settings here:
Face Up -> Holy MP Restore -> Meteor Absorb Used MP -> Fire 3 Gilgame Heart -> Bolt 3 Blank -> Ice 3
This one's a bit harder to give instructions for changing in a non-technical way. The first section of scus changes is the reaction flags. Any reaction changed by this must have its reaction flag set to 29. Add/delete/change these as needed. Directions for doing this:
Change the offset of this to 4F3D0 + the hex referenced below.
The bold number is the number of reaction abilities you are using this hack to change. If you are using more or less than 5, change this number.
The 2 sections at the end are the tables that reference the reaction ability id's and the ability you want them to cast. The ones at offset EAEC0 are the reaction abilities, the ones at EAED0 are the abilities you want them to cast. Red -> Red, Blue -> Blue, etc. Don't forget to reverse the bytes for everything (for example, Holy = 0F00)! Set everything you're not using to 0000.
This hack has all the same limitations as my other one. Abilities keep their original triggers, so abilities that don't actually have a trigger (like Abandon or Weapon Guard) can't be used without rewriting other code. Ability must not be part of the main reaction routine (so stuff that's already there like Counter Magic or Counter are also off limits). Blank ability requires my other hack (blank reaction = damage trigger). Also, if you need more than 8 reaction abilities, it is possible to expand/move these tables, but you're on your own with this one. :p
Documentation of the looping section (from secondadvent):
ori r4,r0,0x0000 //Counter = 0 lui r6,0x8015 //(saved to r6 for use in loading ability as well) sll r2,r4,0x01 //Counter * 2 (for loading halfwords) addu r6,r6,r2 //(shift the pointer to the current reaction) lhu r5,0x1ec0(r6) //Load Reaction ID from table (update if table moves) lui r2,0x8019 lhu r2,0x2d9c(r2) //Load Unit's Reaction ID nop bne r2,r5,0x0038 //Branch if Reaction ID doesn't match (to sltiu) addiu r4,r4,0x0001 //Counter++ lhu r6,0x1ed0(r6) //r6 = Reaction's Ability ID (update if table moves) ori r5,r0,0x000b //r5 = 0xb (Black Magic) j 0x0017e3dc addu r4,r17,r0 //r4 = Target's Data Pointer sltiu r5,r4,0x0005 //(set this to how many reactions you're using) bne r5,r0,0x0004 //Branch if all Reactions haven't been checked (lui r6) lui r2,0x8019 //(doesn't hurt to do it here, so why not?) lh r2,0x2d9c(r2) //(default done if unit has none of the reactions) j 0x0017e400 lui r1,0x8006 //(replacing nop to jump one op further)
Passive reactions become supports:
<Patch name="Moves Arrow Guard/Blade Grasp to support abilities"> <Description>Arrow Guard and Blade grasp are supports instead of reactions.</Description> <Location file="BATTLE_BIN" offset="125ABC"> 8F004390 00000000 80006230 05004010 40006230 </Location> <Location file="BATTLE_BIN" offset="1260c8"> 00000000 00000000 00000000 00000000 </Location> <Location file="BATTLE_BIN" offset="126198"> 00000000 00000000 00000000 00000000 </Location> </Patch>
<Patch name="Moves Finger Guard to support abilities"> <Description>Finger Guard support in Equip Sword slot instead of reactions.</Description> <Location file="BATTLE_BIN" offset="121324"> 8F00A290 00000000 20004230 </Location> </Patch>
<Patch name="Moves Catch to support abilities"> <Description>Catch support in Equip Sword slot instead of reactions.</Description> <Location file="BATTLE_BIN" offset="1213F4"> 8F00A290 00000000 20004230 </Location> <Location file="BATTLE_BIN" offset="12145C"> C8010234 00000000 </Location> </Patch>
<Patch name="Moves Abandon to support abilities"> <Description>Abandon support in Equip Katana slot instead of reactions.</Description> <Location file="BATTLE_BIN" offset="11E3A8"> 8F004290 00000000 10004230 </Location> <Location file="BATTLE_BIN" offset="11E3D4"> 00000000 00000000 00000000 00000000 </Location> </Patch>
Default for the first hack moves Blade Grasp and Arrow Guard to the Equip Armor and Equip Shield slots respectively. Default for Finger Guard and Catch moves it to the Equip Sword slot, and Abandon into the Equip Katana slot. To change this, change the bold to the new group, and italics to the new slots. For Catch, you must also change the underlined bit to reference the new ability ID you want. This can be changed to any r/s/m slots actually but both have to be in the same group for Blade Grasp/Arrow Guard hack.
.0x008b: Reactions 1 ..0x80 - PA Save ..0x40 - MA Save ..0x20 - Speed Save ..0x10 - Sunken State ..0x08 - Caution ..0x04 - Dragon Spirit ..0x02 - Regenerator ..0x01 - Brave UP .0x008c: Reactions 2 ..0x80 - Face (Faith) UP ..0x40 - HP Restore ..0x20 - MP Restore ..0x10 - Critical Quick ..0x08 - Meatbone Slash ..0x04 - Counter Magic ..0x02 - Counter Tackle ..0x01 - Counter Flood .0x008d: Reactions 3 ..0x80 - Absorb Used MP ..0x40 - Gilgame Heart ..0x20 - Reflect ..0x10 - Auto Potion ..0x08 - Counter ..0x04 - ..0x02 - Distribute ..0x01 - MP Switch .0x008e: Reactions 4 ..0x80 - Damage Split ..0x40 - Weapon Guard ..0x20 - Finger Guard ..0x10 - Abandon ..0x08 - Catch ..0x04 - Blade Grasp ..0x02 - Arrow Guard ..0x01 - Hamedo .0x008f: Support 1 ..0x80 - Equip Armor ..0x40 - Equip Shield ..0x20 - Equip Sword ..0x10 - Equip Katana ..0x08 - Equip Crossbow ..0x04 - Equip Spear ..0x02 - Equip Axe ..0x01 - Equip Gun .0x0090: Support 2 ..0x80 - Half of MP ..0x40 - Gained JP-UP ..0x20 - Gained EXP-UP ..0x10 - Attack UP ..0x08 - Defense UP ..0x04 - Magic Attack UP ..0x02 - Magic Defense UP ..0x01 - Concentrate .0x0091: Support 3 ..0x80 - Train ..0x40 - Secret Hunt ..0x20 - Martial Arts ..0x10 - Monster Talk ..0x08 - Throw Item ..0x04 - Maintenance ..0x02 - Two Hands ..0x01 - Two Swords .0x0092: Support 4 ..0x80 - Monster Skill ..0x40 - Defend ..0x20 - Equip Change ..0x10 - ..0x08 - Short Charge ..0x04 - Non-Charge ..0x02 - ..0x01 - .0x0093: Movement 1 ..0x80 - Move +1 ..0x40 - Move +2 ..0x20 - Move +3 ..0x10 - Jump +1 ..0x08 - Jump +2 ..0x04 - Jump +3 ..0x02 - Ignore Height ..0x01 - Move-HP UP .0x0094: Movement 2 ..0x80 - Move-MP UP ..0x40 - Move-Get EXP ..0x20 - Move-Get JP ..0x10 - Cannot Enter Water ..0x08 - Teleport ..0x04 - Teleport 2 ..0x02 - Any Weather ..0x01 - Any Ground .0x0095: Movement 3 ..0x80 - Walk on Water ..0x40 - Move in Water ..0x20 - Move on Lava ..0x10 - Move Underwater ..0x08 - Float ..0x04 - Fly ..0x02 - Silent Walk ..0x01 - Move-Find Item
This can serve a few purposes. If the original effect of whatever you tied these abilities to isn't disabled, it has both the effect of blade grasp/arrow guard and whatever you're tying it to. Recategorizing some r/s/m, but also frees up reaction slots for the purpose of creating new reaction abilities; since an entry on the reaction flags table is required to make a reaction ability behave like a reaction. This effectively disables the slots that Blade grasp/arrow guard were once in (so they now have no effect), to allow for coding a reaction ability in their slots. An oddity of this hack is that these abilities function like supports - in that someone can guard with blade grasp and react with a different ability now!
**Improved** Abandon no longer animates strangely.
Disables Equip X abilities/Female only equipment:
<Patch name="Disables all equip support abilities"> <Description>Disables the effect of all "Equip X" support abilities.</Description> <Location file="SCUS_942_21" offset="4B178"> 00000000 </Location> <Location file="SCUS_942_21" offset="4B2A0"> 00000000 </Location> <Location file="SCUS_942_21" offset="4DF18"> 00000000 </Location> </Patch>
This disables all of the Equip X abilities (such as Equip Armor), along with the Female only equipment. Useful if you want to code these abilities to do something else.
Blank reaction (01bb) given damage trigger:
<Patch name="Blank reaction = damage trigger"> <Description>Gives blank reaction a damage trigger. Puts the blank reaction in the 2nd priority list for stacking purposes.</Description> <Location file="BATTLE_BIN" offset="125c64"> DC470508 00000000 </Location> <Location file="BATTLE_BIN" offset="eaf70"> 1980043C 982D848C 00000000 8D008390 00000000 04006230 03004010 00000000 A233060C BB010434 1C330608 00000000 </Location> </Patch>
This gives the blank reaction ability a damage trigger. It places the ability in the 2nd priority for the purpose of stacking reaction abilities (same as Distribute/MP Switch/Damage Split). By itself, it doesn't do anything. However, it's useful if you want to code the blank reaction to do something, such as by using the Face up -> Counter Tackle hack to reference blank ability instead.
Multi-reaction given damage trigger:
<Patch name="Multi-reaction = damage trigger"> <Description>Gives multiple reactions a damage trigger, for the purpose of rewriting their vanilla effects to do something else.</Description> <Location file="BATTLE_BIN" offset="125c64"> DC470508 00000000 </Location> <Location file="BATTLE_BIN" offset="eaf70"> 1980043C 982D848C 00000000 8E008390 00000000 04006230 03004010 00000000 A233060C C3010434 02006230 03004010 00000000 A233060C C4010434 8D008390 00000000 04006230 03004010 00000000 A233060C BB010434 1C330608 00000000 </Location> </Patch>
Since I can't figure out how to get the other 4 of these as functional slots for use with Multi-Reaction deluxe, use this version instead. This will code a reaction trigger to Blank slot, Arrow Guard, Blade Grasp's slots.
Old code (for documentation purposes/in case someone wants to figure out something with it themselves):
This gives multiple reactions a damage trigger, for the purpose of coding them to do something else (see multi-reaction deluxe hack). For these reactions to *only* do what you code them to do, disable or move their vanilla effects (as directed in the passive reactions become supports hacks). The reactions affected here: Weapon Guard, Finger Guard, Abandon, Catch, Blade Grasp, Arrow Guard, Blank Slot (listed in that order). For the purpose of stacking reaction abilities, all of these abilities are on list 2 now.
**Don't change the triggers yet - currently has issues...
Options to make any of these use a different trigger exist. To change the triggers, change the colored lines in the code corresponding to the ability you want.
MP Trigger:
00000000 DD33060C
Countergrasp:
10000534 8133060C
Counter Magic:
40000534 8133060C
Counter Flood:
80000534 8133060C
Ability works as Blade Grasp for the Math Skill flag:
This creates a support that works like Blade Grasp but for the Math Skill flag instead of Countergrasp. This can be tied to any r/s/m (change the bold numbers, same directions as the hacks that move passive reactions to other slots) or to any ability flags (change italics numbers, directions below). I just chose Math Skill flag here because it's often not used in any other way in most mods.
First number is the last 2 digits of the Abilities Flag group. Second number is the flag.
Meatbone Slash mimics range and animation of other attack:
<Patch name="MBS mimics range and animation of other attack"> <Description>Keeps its original effect (unevadable counter in amount of max hp), but uses several properties of attack indexed here.</Description> <Location file="BATTLE_BIN" offset="1172d4"> 33000534 0A010634 </Location> </Patch>
Change the attack indexed here by changing the italics (a skillset that contains that attack) and bold (the attack you want to mimic). Default here is Choco Ball. Meatbone Slash will use the animation, range, aoe, etc. of the attack indexed here instead of that of the standard attack. Useful if you want to make MBS more useful on monsters/bosses.
2 Swords penalty:
<Patch name="2 Swords Penalty"> <Description>3/4 damage per hit on units with 2 swords. Affects all abilities with Formulas 01-07, no effect on other physical formulas.</Description> <Location file="BATTLE_BIN" offset="11EF80"> 30420508 00000000 </Location> <Location file="BATTLE_BIN" offset="E98C0"> 1980023C 942D428C 00000000 91004290 00000000 01004230 0B004010 00000000 1980023C CE384284 00000000 40180200 21186200 C2170300 21186200 83180300 1980013C CE3823A4 1980023C E2170608 CE384224 </Location> </Patch>
This imposes a damage penalty (Reduces damage to 75% per hit) on units with the 2 swords support. Unfortunately, also affects units who have the support but aren't actually using 2 swords; and also affects any ability using the formulas 01-07 on the same unit. However, this does not affect other physical formulas like Punch art/Chakra.
Disables Secret Hunt and Train:
<Patch name="Disables Secret Hunt/Train slots"> <Description>Useful if you are writing them over with something else. Frees space between 0x00187ca0 - 0x00187eb0 (battle bin).</Description> <Location file="BATTLE_BIN" offset="124988"> 00000000 </Location> </Patch>
This disables the Poach/Train effect entirely. Has no effect on Secret Hunt's requirement to enter Fur Shop (which another hack for exists), but it allows you to replace these 2 ability slots with something else. A requirement for other hacks of mine as listed in description.
Train inflicts different status:
<Patch name="Sicken 2.0"> <Description>All physical attacks by a unit apply Poison (in addition to regular effects). Requires Disables Secret Hunt/Train hack and Monster Skill nullifies M-ev hack.</Description> <Location file="BATTLE_BIN" offset="11E364"> 9448050C 00000000 </Location> <Location file="BATTLE_BIN" offset="EB250"> E8FFBD27 1000BFAF 1980023C 942D428C 00000000 91004290 00000000 80004230 08004010 1980033C 902D638C 00000000 1E006290 00000000 80004234 C912060C 1E0062A0 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
This is a significant improvement to the old Sicken hack. Requires Disable Secret Hunt/Train (to disable the Train slot) Monster Skill nullifies M-ev (to prevent this hack from breaking transparent). A unit with Train will now poison any unit with any physical attack, in addition to the regular effects of the attack. It won't apply if the application of the status is invalid (such as if a unit is immune to poison or already dead).
**Improvement** Use Disable Secret Hunt/Train instead of the old hack to disable Train's vanilla effect. It no longer plays a funny noise if you get a unit in critical with an attack. :)
Remove HP/MP caps:
<Patch name="Remove HP Cap"> <Description>All things cap at 65535 instead of 999 regardless of flags/equipment.</Description> <Location file="SCUS_942_21" offset="4c088"> FFFF0E34 </Location> <Location file="SCUS_942_21" offset="4ce04"> FFFF1034 </Location> </Patch>
This removes the HP/MP cap, capping it at 65535 instead of 999. If you want more than 65535 you're out of luck. :p Has no effect on damage caps. Just means that an enemy with non-??? can be generated with more than 999 hp. Also removes the HP/MP cap upon equipping an enemy with items that'll bring it over 999, whether it has ??? or not. The only negative side effect, as far as I can tell, is that an enemy's display will have the last 3 digits if it's >999; for example displaying 024 instead of 1024, and will still display 999 in Unit List if >999 hp/mp if you use Xifanie's unhide ??? hack.
Support ability = 2x damage in critical
Don't use this version, use the other one. Hack left in this topic for documentation purposes.
<Patch name="Monster talk = 2x damage while in critical"> <Description>Support = 2x damage while in critical. Credit to secondadvent for helping me fix this.</Description> <Location file="BATTLE_BIN" offset="1216BC"> 1442050C </Location> <Location file="BATTLE_BIN" offset="121784"> 1442050C </Location> <Location file="BATTLE_BIN" offset="121870"> 1442050C </Location> <Location file="BATTLE_BIN" offset="e9850"> 1980063C 942DC68C 1980033C CE386394 9100C490 1980023C D0384294 10008430 07000410 00000000 5A00C490 00000000 01008430 02000410 00000000 40180300 18006200 1980033C 902D638C 80000234 250062A0 12100000 0800E003 040062A4 </Location> </Patch>
Default here is tied to Monster Talk, which has no effect in my mod. If you want to change it to a different support slot, change the bold numbers. This doubles damage done by a character when it's in critical from any source except for formulas that don't use the XA*YA format (such as Self Destruct or Gravi2).
.0x008b: Reactions 1 ..0x80 - PA Save ..0x40 - MA Save ..0x20 - Speed Save ..0x10 - Sunken State ..0x08 - Caution ..0x04 - Dragon Spirit ..0x02 - Regenerator ..0x01 - Brave UP .0x008c: Reactions 2 ..0x80 - Face (Faith) UP ..0x40 - HP Restore ..0x20 - MP Restore ..0x10 - Critical Quick ..0x08 - Meatbone Slash ..0x04 - Counter Magic ..0x02 - Counter Tackle ..0x01 - Counter Flood .0x008d: Reactions 3 ..0x80 - Absorb Used MP ..0x40 - Gilgame Heart ..0x20 - Reflect ..0x10 - Auto Potion ..0x08 - Counter ..0x04 - ..0x02 - Distribute ..0x01 - MP Switch .0x008e: Reactions 4 ..0x80 - Damage Split ..0x40 - Weapon Guard ..0x20 - Finger Guard ..0x10 - Abandon ..0x08 - Catch ..0x04 - Blade Grasp ..0x02 - Arrow Guard ..0x01 - Hamedo .0x008f: Support 1 ..0x80 - Equip Armor ..0x40 - Equip Shield ..0x20 - Equip Sword ..0x10 - Equip Katana ..0x08 - Equip Crossbow ..0x04 - Equip Spear ..0x02 - Equip Axe ..0x01 - Equip Gun .0x0090: Support 2 ..0x80 - Half of MP ..0x40 - Gained JP-UP ..0x20 - Gained EXP-UP ..0x10 - Attack UP ..0x08 - Defense UP ..0x04 - Magic Attack UP ..0x02 - Magic Defense UP ..0x01 - Concentrate .0x0091: Support 3 ..0x80 - Train ..0x40 - Secret Hunt ..0x20 - Martial Arts ..0x10 - Monster Talk ..0x08 - Throw Item ..0x04 - Maintenance ..0x02 - Two Hands ..0x01 - Two Swords .0x0092: Support 4 ..0x80 - Monster Skill ..0x40 - Defend ..0x20 - Equip Change ..0x10 - ..0x08 - Short Charge ..0x04 - Non-Charge ..0x02 - ..0x01 - .0x0093: Movement 1 ..0x80 - Move +1 ..0x40 - Move +2 ..0x20 - Move +3 ..0x10 - Jump +1 ..0x08 - Jump +2 ..0x04 - Jump +3 ..0x02 - Ignore Height ..0x01 - Move-HP UP .0x0094: Movement 2 ..0x80 - Move-MP UP ..0x40 - Move-Get EXP ..0x20 - Move-Get JP ..0x10 - Cannot Enter Water ..0x08 - Teleport ..0x04 - Teleport 2 ..0x02 - Any Weather ..0x01 - Any Ground .0x0095: Movement 3 ..0x80 - Walk on Water ..0x40 - Move in Water ..0x20 - Move on Lava ..0x10 - Move Underwater ..0x08 - Float ..0x04 - Fly ..0x02 - Silent Walk ..0x01 - Move-Find Item
<Patch name="Equip Spear = +5 speed in critical"> <Description>Unit with Equip Spear support acts as +5 speed when critical. Speed bonus removed when unit is no longer critical.</Description> <Location file="BATTLE_BIN" offset="11C964"> 4C420508 00000000 </Location> <Location file="BATTLE_BIN" offset="e9930"> 38003792 8F002292 00000000 04004230 07000210 00000000 5A002292 00000000 01004230 02000210 00000000 0500F726 5B0E0608 00000000 </Location> </Patch>
This is currently tied to Equip Spear, but can be tied to any r/s/m slot. Change the bold numbers to change the r/s/m slot this refers to. The speed bonus can also be changed, change the number in italics to be the speed increase you want (in hex).
The speed increase works much like haste/slow statuses - does not actually change the stat so it can't stack indefinitely. Also, like haste/slow does not affect formulas that use speed like some weapons/throw.
Conditional Support bundle
<Patch name="Equip Spear = +5 speed in critical, Equip Axe = double speed while berserked"> <Description>Speed bonus removed when unit is no longer critical.</Description> <Location file="BATTLE_BIN" offset="11C964"> 4C420508 00000000 </Location> <Location file="BATTLE_BIN" offset="e9930"> 38003792 8F002292 00000000 04004230 07000210 00000000 5A002292 00000000 01004230 02000210 00000000 0500F726 8F002292 00000000 02004230 07000210 00000000 5A002292 00000000 08004230 02000210 00000000 40B81700 5B0E0608 00000000 </Location> </Patch>
These 2 supports are bundled together because they affect the same area of code. Again, works like Haste/Slow status in that it goes away when the status effect no longer is active.
Blank status = MP Poison
<Patch name="Wall becomes Mist or MP Regen, Blank status becomes MP Poison"> <Description>The MP Regen recovers 1/4 of Max MP after each turn. MP Poison depletes 1/4 max mp after each turn.</Description> <Location file="BATTLE_BIN" offset="000F6EBC"> 5B000392 00000000 01006230 08004010 00000000 2E000296 1980033C 902D638C 82100200 0A0062A4 10000234 250062A0 58000392 00000000 80006230 08004010 00000000 2E000296 1980033C 902D638C 82100200 080062A4 20000234 250062A0 FD350608 5B000392 </Location> <Location file="BATTLE_BIN" offset="001267EC"> AF770508 00000000 </Location> </Patch>
This is bundled with Pride's Mist hack, since it has to affect the same area of code to not break things if you're using both. It is also important to make them cancel each other like Poison/Regen do. If you check the right boxes in Patcher, the status effect even shows the purple numbers for the MP damage. :)
Gain XP Up = Shed Skin:
100% accuracy version:
<Patch name="Gain XP Up = Shed Skin"> <Description>100% accuracy, remove negative statuses at the end of a character's turn.</Description> <Location file="BATTLE_BIN" offset="EBC70"> 90000392 00000000 20006230 0F004010 00000000 1980033C 902D638C 90000234 200062A0 BE000234 210062A0 8A000234 220062A0 86000234 230062A0 3D000234 240062A0 08000234 250062A0 1980023C 902D428C 14360608 00000000 </Location> <Location file="BATTLE_BIN" offset="126844"> 1C4B0508 00000000 </Location> </Patch>
Faith based RNG roll version:
<Patch name="Gain XP Up = Shed Skin"> <Description>Sheds negative status at the end of turn, fa/200% accuracy.</Description> <Location file="BATTLE_BIN" offset="EBC70"> 90000392 00000000 20006230 1C004010 00000000 5C000592 00000000 4000A530 1700A010 00000000 26000592 00000000 1300A010 00000000 3378010C C8000434 0F004014 00000000 1980033C 902D638C 80000234 200062A0 BE000234 210062A0 8A000234 220062A0 86000234 230062A0 3D000234 240062A0 08000234 250062A0 1980023C 902D428C 14360608 00000000 </Location> <Location file="BATTLE_BIN" offset="126844"> 1C4B0508 00000000 </Location> </Patch>
This version has accuracy fa/200%, for example a 60 fa unit will shed skin 30% of the time. To change the divisor, change the italics number to what you want in hex, for example 0x64 = 100. **EDIT** Now will work properly with innocent (shed skin 0% if target is inflicted with innocent).
This removes negative status effects at the end of every turn. A character must be able to reach his turn to activate this ability, so it will not have an effect on the following status effects: Petrify, Stop, Sleep; despite currently being referenced in the ability's code. It will cancel the following: Blank, Undead, Darkness, Confuse, Silence, Blood Suck, Cursed, Oil, Frog, Berserk, Poison, Slow, Charm, Don't Move, Don't Act, Death Sentence. Ability is applied after character's turn, so for example a character with Don't Act and Poison applied to it will not be able to act and will take Poison damage for his turn, but the status effects will be removed when Wait is pressed or after the character moves.
If you do not want to bundle this with Gain XP Up's vanilla effect, use the hack that disables Gain XP Up's slot.
Disable Gain XP Up Slot:
<Patch name="Disables Gained XP Up Slot"> <Description>Useful if you want to use the slot for something else.</Description> <Location file="BATTLE_BIN" offset="1266b8"> 00000234 </Location> </Patch>
As description says. Disables Gained XP Up's slot so that you can use its slot for something else.
Monsters can use attack:
<Patch name="Monsters can use attack"> <Description>Changes all monsters to be able to use Attack command.</Description> <Location file="BATTLE_BIN" offset="11A410"> 00000000 </Location> <Location file="BATTLE_BIN" offset="11A424"> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 </Location> </Patch>
This gives monsters the same skillset appearance they had before if given a standard monster skillset, but if you check under Act, they can use the standard attack command in addition to their primary set. If you force equip a secondary set here, they can also use that too. Currently monster skillset names appear as blank under the act screen (not sure if there's a fix to that).
Changes status used by Float movement:
<Patch name="Changes status inflicted by Float movement"> <Description>Default = Dark/Evil looking</Description> <Location file="SCUS_942_21" offset="4DCFC"> 4F002292 00000000 02004234 </Location> </Patch>
Change according to this, first bold number is the group, second bold number is status you want:
This changes the XP gained per action to X - (speed*2), min 1. default X = 30, change bold number to what you want X to be in hex. No bonus XP for kills, for attacking something at higher level, just a constant number. Faster characters will gain less xp per action. While this doesn't fully solve the problem of fast characters leveling up too fast compared to slow ones, it's better than it was in vanilla. As a side effect, there's also no attacking a lv 1 unit for loads of jp and 1 xp gain.
As description says, this requires my disable equip x/female equips because it needed to be written in scus and there's normally no free space. If you're getting rid of something different in scus, feel free to move the code. Anyway, this is harder to explain all the customization options in a non-technical way.
Documentation:
lbu r2,0x004e(r4) //Innate statuses 1 nop ori r2,r2,0x0010 //Innate undead sb r2,0x004e(r4) lbu r2,0x0054(r4) //Status immunities 2 nop ori r2,r2,0x0080 //Immune Petrify sb r2,0x0054(r4) lbu r2,0x0055(r4) //Status immunities 3 nop ori r2,r2,0x0002 //Immune Frog sb r2,0x0055(r4) lbu r2,0x0036(r4) //Load PA nop addiu r2,r2,0x0002 //+2 PA sb r2,0x0036(r4) lbu r2,0x0037(r4) //Load Ma nop addiu r2,r2,0x0002 //+2 Ma sb r2,0x0037(r4) lbu r2,0x0038(r4) //Load speed nop addiu r2,r2,0x0002 //+2 speed sb r2,0x0038(r4) j 0x0005c938 //jump to original +move/jump abilities routine andi r2,r6,0x0010 //Required to make rest of routine to work as normal.
Pretty sure most things can be added here that are part of Unit Data and make sense to change in this manner. For a short list: stats (pa/ma/speed/move/jump), equippable items, innate statuses, status immunities, absorb/null/half/weak/strengthen elements.
Cannot Enter Water = innate Dead, Equip Gun = Innate Transparent
Requires Disable Equip X/Female supports hack. If you can clear different Scus code, you can move this. Of course, these status effects and their slots can be changed. :) Since 2 of these affect the same area of code, they're bundled together. Main purpose of innate dead on a support or move slot is to open up class slots to be used for something else, and keep the "dead for cutscene" effects.
Equip Gun = Immunity to all evadable attacks:
<Patch name="Equip Gun grants immunity to all evadable attacks"> <Description>Sets hit rate = 0% if attack is evadable. Concentrate/transparent ignores this.</Description> <Location file="BATTLE_BIN" offset="f6d80"> 8F00A190 00000000 01002130 02002010 1980013C DC3820A0 1980083C DC380891 14160608 00000000 </Location> <Location file="BATTLE_BIN" offset="11e848"> 60770508 00000000 </Location> </Patch>
This is as OP as it sounds. Grants immunity to all attacks which are evadable. Unevadable attacks work as normal. Ignores Concentrate/transparent (as in, those abilities don't bypass this calculation). Useful if you want an OP enemy ability, or want to be nearly invincible...
Blank support 01e4 (under No charge) adds +25% base accuracy to hasted/reraised targets:
<Patch name="Equip Gun grants immunity to all evadable attacks, Blank slot after Non charge gives +25% hit rate to hasted or reraised targets"> <Description>Equip Gun Sets hit rate = 0% if attack is evadable. Concentrate/transparent ignores this.</Description> <Location file="BATTLE_BIN" offset="eb340"> 8F00A390 00000000 01006330 03006010 00000000 1980033C DC3860A0 1980033C 942D638C 00000000 92006390 00000000 02006330 0E006010 00000000 5A00A390 00000000 20006330 06006014 00000000 5B00A390 00000000 08006330 04006010 00000000 1980083C 7D000334 DC3803A1 1980083C DC380891 14160608 00000000 </Location> <Location file="BATTLE_BIN" offset="11e848"> D0480508 00000000 </Location> </Patch>
Bundled with Concealment (Equip Gun = immunity to evadable attacks) due to affecting the same area of code. This adds +25% to the pre-evasion values, which different types of evasion stack multiplicatively on.
Blank support 01e4 (under No charge) adds +50% damage to hasted/reraised targets:
<Patch name="Blank Support after No charge gives unit 50% bonus damage on units that are Hasted or Reraised"> <Description>Affects damage done by anything boosted by ATK or MATK Up</Description> <Location file="BATTLE_BIN" offset="11f054"> 80420508 00000000 </Location> <Location file="BATTLE_BIN" offset="11f204"> A8420508 00000000 </Location> <Location file="BATTLE_BIN" offset="e9a00"> 1980013C 942D218C 00000000 92002390 00000000 02006330 18006010 00000000 1980043C 982D848C 00000000 5A008390 00000000 20006330 06006014 00000000 5B008390 00000000 08006330 0B006010 00000000 1980033C CE386384 00000000 40200300 21208300 C21F0400 21208300 43200400 1980013C CE3824A4 1980033C FF386390 17180608 00000000 </Location> <Location file="BATTLE_BIN" offset="e9aa0"> 1980023C 942D428C 00000000 92004390 00000000 02006330 18006010 00000000 1980043C 982D848C 00000000 5A008390 00000000 20006330 06006014 00000000 5B008390 00000000 08006330 0B006010 00000000 1980033C CE386384 00000000 40200300 21208300 C21F0400 21208300 43200400 1980023C CE3844A4 1980023C 942D428C 17180608 00000000 </Location> </Patch>
Affects anything boosted by ATK or MATK Up, has no effect on moves such as Self Destruct or Gravi2. Damage bonus works similarly to Martial Arts, only affects both physical and magical attacks and only affects hasted or reraised units. Stacks with all other abilities, item attributes, etc. that affect damage output, such as Atk/Matk up, Martial Arts, Pride's Defense hack, any of my new abilities that increase/decrease damage. The purpose of this (and previous) hacks is to create an anti-buff ability that doesn't cancel the buffs.
Mold Breaker (Ignores effects of several abilities):
Blank Support 3 (0x01E5, 2nd ability below Non Charge) will allow a unit to ignore the effects of Reflect, Blade Grasp, and Arrow Guard. If you are using my Runic hack (Blade Grasp for Math Skill flag), it will ignore this ability too.
If you are using Concealment and would like this ability to also ignore the effects of that, patch this version:
<Patch name="Equip Gun grants immunity to all evadable attacks, Blank slot after Non charge gives +25% hit rate to hasted or reraised targets"> <Description>Equip Gun Sets hit rate = 0% if attack is evadable. Concentrate/transparent ignores this. Rewritten to work with Mold Breaker</Description> <Location file="BATTLE_BIN" offset="eb340"> 1980033C 942D638C 00000000 92006890 00000000 01000831 08000015 00000000 8F00A890 00000000 01000831 03000011 00000000 1980083C DC3800A1 92006390 00000000 02006330 0E006010 00000000 5A00A390 00000000 20006330 06006014 00000000 5B00A390 00000000 08006330 04006010 00000000 1980083C 7D000334 DC3803A1 1980083C DC380891 14160608 00000000 </Location> <Location file="BATTLE_BIN" offset="11e848"> D0480508 00000000 </Location> </Patch>
Critical applied at 1/4:
<Patch name="Critical = 1/4"> <Description>Critical status applies at 1/4 hp instead of 1/5</Description> <Location file="BATTLE_BIN" offset="125344"> 00000000 00000000 00000000 </Location> <Location file="SCUS_942_21" offset="4DF88"> 00000000 00000000 28002396 00000000 </Location> </Patch>
This changes the application of critical from 1/5 to 1/4. This has the net effect of making "x in critical" abilities more useful/dangerous on enemies.
This gives all monsters 20% magic evade. Change the bold number to the amount you want in hex. This M-ev amount is invisible to the player from the screen (you still see the % under c-ev as 0), but when you attack a monster with an evadable magic attack, it properly shows up there and evades. It also properly is nullified by transparent. :)
Set M-ev by class! Credit goes to Xifanie for rewriting my code into code that works. :) This works as would be expected - nullified by Transparent, etc. Only issue is it doesn't appear on the character screen.
The big long commented block is the table of classes. Values are one byte per class. Comments are the last class number in those lines (for ease in finding it). Default here is the values I needed, edit these to suit your needs. :)
Works like Concentrate, but only for magic attacks. Currently tied to Monster Skill (can be changed to a different slot if you'd rather). If you use my move Abandon -> Support hack, apply that one first and then this, or get rid of the nops at 11E3D4 on that hack.
Move XP up = Move XX up
<Patch name="Move XP Up = Move PA up"> <Description>Doesn't display as an icon, otherwise works!</Description> <Location file="BATTLE_BIN" offset="126e20"> 1980033C 902D638C 81000234 BD370608 140062A0 </Location> </Patch>
This turns Move XP up to Move XX up. XX up can be PA, MA, Speed, Brave, Faith, Level (up or down); default here is PA up. Unfortunately doesn't display an icon the way PA save does, but if you check the status screen the character gets its PA bonus as long as it's moving.
<Patch name="Move XP Up = Move-Regen"> <Description>Inflicts status if character moves. Doesn't display an icon, otherwise works!</Description> <Location file="BATTLE_BIN" offset="126e20"> 1980033C 902D638C 40000234 1E0062A0 C912060C 00000000 2E004010 00000000 BD370608 08001034 </Location> </Patch>
This version will inflict a status if the character moves, and fail if infliction is invalid. Can be used for any status infliction/removal within the same group. Again, doesn't display anything, but if you check the character screen, it works. :)
Move JP up = Move XX Up
<Patch name="Move JP Up = Move MA up"> <Description>Doesn't display as an icon, otherwise works!</Description> <Location file="BATTLE_BIN" offset="126e88"> 1980033C 902D638C 81000234 BD370608 150062A0 </Location> </Patch>
<Patch name="Move JP Up = Move-Transparent"> <Description>Inflicts status if character moves. Doesn't display an icon, otherwise works!
See Move XP up for description - these work exactly the same way, but replace move JP up.
Blank Support 01E1 (between Equip Change and Short Charge) doubles critical hit rate:
<Patch name="Blank 01E1 = Critical hit x2"> <Description>Critical hit on unit with support 01E1 increased from 6.25% to 12.5%</Description> <Location file="BATTLE_BIN" offset="11F504"> 78770508 00000000 </Location> <Location file="BATTLE_BIN" offset="F6DE0"> 1980023C 942D428C 00000000 92004290 00000000 10004230 05004010 08000534 B63B060C 00000000 43190608 00000000 04000534 B63B060C 00000000 43190608 00000000 </Location> </Patch>
Exactly as description says. To change crit rates, they use a divisor of 64. Change the bold number to be the crit rate you want granted by the ability, and italics to be the default crit rate.
This is bundled with Pride's individual weapon proc rate, due to needing to write the support ability hack to function correctly with this hack as well. It assumes a proc rate divisor of 0x64. As per my usual policy of sharing everything I do that works, it's here. :)
Locks job wheel/equip screen for standard monsters:
<Patch name="Locks job wheel/equip screen for standard monsters"> <Description>This means if you change the skillsets for any of the monsters from 5E onwards, it works as a regular monster skillset in that job wheel, change ability, item screen no longer is accessible.</Description> <Location file="WORLD_WORLD_BIN" offset="40b94"> A2FF8424 4200842C </Location> </Patch>
No more glitchy job wheel if you change skillsets on the standard monster classes! :)
Silly hardcoding removal on Skillset 8 (Charge):
<Patch name="Silly hardcoding removal, related to skillset 08"> <Description>If you use skillset 08 (charge) for anything other than charge, you want to use this hack.</Description> <Location file="BATTLE_BIN" offset="1191a0"> FFFF0234 </Location> </Patch>
This fixes the bug present in some mods that changes the archer class to have an actual skillset, where characters can cancel their own ability charging if they move. Not sure of its actual purpose if you do use charge, however if you do not, you want to change this line.
Golem uses Countergrasp Flag:
<Patch name="Golem checks for Countergrasp flag"> <Description>Golem blocks all attacks with the Countergrasp flag.</Description> <Location file="BATTLE_BIN" offset="124cac"> F6384290 00000000 10004230 </Location> </Patch>
This makes it so Golem will block any attack with the Countergrasp flag. It is recommended to make Golem enemy only due to the way it derps out the ai anyway, and this hack makes it abusable against the ai in a slightly different way from vanilla. (Near invincibility in conjunction with Blade Grasp, enemies continuously triggering Dragon Spirit for free, etc) Main reason for this hack is to make Golem more of a threat on enemies by blocking more attacks.
Damage = 1/2 if a unit is inflicted with a negative status effect. Currently tied to Gain JP Up's slot. Has no effect on anything that ignores defense (formulas such as Gravi2 or self destruct, or anything i made noted as ignoring defense). This calculation stacks with all other bonuses and penalties (def/mdef up, status effects' damage bonus such as oil or frog, elemental weakness or 1/2, Pride's Defense by Job hack, etc). Calculation is made before damage is capped, so it won't truncate damage at 499 if a character is able to do more than that pre-cap. The following status effects boost defense: Blank, Darkness, Confusion, Silence, Berserk, Blood Suck, Cursed, Oil, Chicken, Frog, Poison, Stop, Slow, Sleep, Charm, Don't Move, Don't Act, Death Sentence. Due to the nature of Petrify, Dead, Crystal, Treasure it's not included; and Undead, Innocent not included because my mod treats them more like neutral effects.
If you don't want this to stack with Gain JP Up's vanilla effect, use the following (not my hack, forgot who made it):
<Patch name="Gained JP UP innate all"> <Description>Disables the Gained JP Up slot too.</Description> <Location file="BATTLE_BIN" offset="1179a4"> 00000000 </Location> </Patch>
This is bundled with Marvel Scale because it affects the same area of code. Guts gives 3/2 damage if a unit is inflicted with a negative status effect. It uses the same definition of negative status effect as Marvel Scale. It also replaces Jump +2.
Requires Disable Secret Hunt/Train slots if you're replacing Secret Hunt. This works similarly to Moxie in Pokemon - if a unit kills the target with its move, its PA/MA go up. There is a weird catch - in the case of AOE moves, the unit must kill every target that is in the AOE of the move in order to get the bonus. So it's more useful on things that primarily deal damage with single target moves. It also animates the bonus if a unit successfully gets the bonus! :)
Undead always reraises/Treasure disabled:
<Patch name="Undead always rerise, Treasure disabled"> <Description>First part makes undead always rerise. Second part removes treasure.</Description> <Location file="BATTLE_BIN" offset="11C17C"> 00000000 </Location> <Location file="BATTLE_BIN" offset="11C1DC"> 00000000 </Location> </Patch>
This makes undead units always reraise instead of the 50/50 roll between reraising and permadeath. It also removes the 50/50 for treasure, and units that can crystalize now always will. If you want immortal + undead units to always reraise when their turn comes up, patch both this hack and the next one:
<Patch name="Move +1 = Poison Heal"> <Description>Heals 1/4 max hp if unit is Poisoned, replaces poison's normal effect</Description> <Location file="SCUS_942_21" offset="4d11c"> 00000000 </Location> <Location file="BATTLE_BIN" offset="126800"> 28780508 00000000 </Location> <Location file="BATTLE_BIN" offset="f70a0"> 93000392 2A000296 80006330 07006010 00000000 1980033C 902D638C 82100200 060062A4 10360608 40000234 02360608 1980033C </Location> </Patch>
This disables Move +1 and changes it to Poison Heal. Units with this ability who are poisoned will regenerate 1/4 max HP every turn until Poison is cured. Can stack with other hacks in this routine without conflict. (Mist, MP Poison, Shed Skin, Poison does 1/4 damage)
Arrow Guard blocks Formula 28 (which I rewrote in my mod, formula hack is in this thread) at br% accuracy. Its function stacks with vanilla's effect, and is also compatible with the hack that changes Arrow Guard to block gun. To change the formula blocked, change the "28" in bold to whatever formula you want.
Rough Skin (Passive recoil damage):
<Patch name="Jump +1 = Rough Skin"> <Description>Disables and replaces Jump +1. Units attacking a unit with Rough Skin will take
recoil damage = target PA*4 if they hit a unit with a damaging move. Requires Disable Secret Hunt/Train slots</Description> <Location file="SCUS_942_21" offset="4d140"> 00000000 </Location> <Location file="BATTLE_BIN" offset="e9b90"> E8FFBD27 1000BFAF 1980013C 982D218C 00000000 93002290 00000000 10004230 0F004010 00000000 90012284 00000000 0B004010 00000000 36002290 00000000 80100200 1980053C 8C2DA58C 01000334 0000A3A0 0400A2A0 80000334 2500A3A0 1000BF8F 1800BD27 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="12497c"> E442050C 00000000 </Location> </Patch>
Disables/Replaces Jump +1. Dealing damage to a unit with this ability will cause recoil = target PA*4. This ability hits 100% of the time and checks are completely independent of reactions. Only one target in the aoe of an aoe attack that has the ability needs to be hit in order for this to work. In the case of multiple hit units, it seems to just be taking one of the recoil damage amounts (not adding them together). It requires Disable Secret Hunt/Train because the check completely takes place of the Secret Hunt/Train check.
"Passive" reactions can be coded (almost) anywhere:
This version adds to the Rough Skin routine, coding Weapon Guard, Finger Guard, Abandon, Catch slots to function as PA save, MA Save, Speed Save, Regenerator respectively. It can also work if you code it to a support/move slot. Why do this?
1. Gives another slot that is compatible with Multi-reaction deluxe (to allow coding something else to it). 2. Reactions coded in this way can stack freely with each other or anything else. What I mean by this: In vanilla code, there is a reaction priority. It'll check for a reaction, and ignore any other reactions in the same priority. If a reaction in the first priority fails (or doesn't exist), it'll check the next priority group. For example a unit with Counter Flood (priority 1) and PA save (priority 3) and 70 brave will Counter Flood 70% of the time, PA save 21% of the time, and nothing 9%. Coded this way, it'll check individually. Same character will now Counter Flood 70% and PA Save 70%, with completely individual checks (you can now get both, one or the other, or none!). 3. Slight downside - it will not display a banner if you get the PA save. It will only display a +1PA icon. 4. Slight downside 2 - it'll give the player the illusion that they can manipulate the rng of regenerator. It doesn't actually calculate the RNG until the attack takes place so the player can't.
As far as I can tell the only things that can be coded this way are stat or status changes, and so far only with damage trigger. So for example PA save, MA save, Speed save, regenerator will function identically to vanilla if used individually, and will stack better with other reactions if you give a character multiple reactions. Dragon Spirit, Brave up, etc. will be damage trigger if coded this way.
As with Rough Skin, this code requires Disable Secret Hunt/Train and is bundled with that hack. It also requires moving or disabling the effects of all vanilla abilities referenced above (unless you want their effects to stack!) Code to disable Jump +1 (for rough skin) is included, everything else is different hacks.
Disables Max Equip at Job Change:
<Patch name="Disables equip at job change"> <Description>Option 12 (Equip at Job Change) does nothing. Code is disabled, so game behaves as if permanently off.</Description> <Location file="WORLD_WORLD_BIN" offset="448a8"> 32000010 </Location> <Location file="WORLD_WORLD_BIN" offset="3ee28"> 00000000 </Location> </Patch>
As description says. Disables option 12 as if the code doesn't exist.
Disables Ignore Height, Any Weather, Any Ground:
<Patch name="Disables Ignore Height, Any Ground, Any weather"> <Description>Disables these so that another ability can be written in their slots</Description> <Location file="BATTLE_BIN" offset="10d774"> 02000010 </Location> <Location file="BATTLE_BIN" offset="10d7b8"> 04000010 </Location> <Location file="BATTLE_BIN" offset="10d828"> 03000010 </Location> </Patch>
Disables these slots (causing them to have no effect). Useful if you want to code something else in these slots.
This changes 1/2 MP to Amplify. Use the checkbox between Hit Allies and Follow Target to toggle whether you want an ability to be amplified. MP cost is increased for all abilities, whether affected by Amplify or not. Skills that are Weapon Range, Linear, Stop at Obstacle, or affect the whole map already can't be amplified. Draw Out and Item are also unaffected (not sure why here). AI code was also changed to work properly with this ability. New MP cost doesn't display properly (no clue why).
**Bugfix** Use this version to not break anything else in the game.
** Don't use yet, currently has issues **
Formulas:
Relevance for these hacks in my mod is to create spells that scale better overall. It solves the problems of attacks that are OP at lv 1 and start to become useless by mid game. While it's still not perfect, attacks/healing retain similar amounts of relevance later into the game as they did in early game.
Additional Multi-hit Formulas (Don't use yet - currently has issues):
Default here is Cure and Punch Art formulas - change the bold to change this. This turns the formulas into number of hits = X+1 (as formula 5e, so it always hits X+1), but retains the other properties of the formula, giving these formulas greater versatility. To make the formulas only hit once, set X=0 in Patcher. This can take any formula that doesn't use X.
Currently breaks 2 swords (not sure why). Don't use yet.
Quadratic Chakra:
<Patch name="Quadratic Chakra"> <Description>Chakra formula = (PA+Y)/2 * PA HP, MP 1/2 this amount</Description> <Location file="BATTLE_BIN" offset="122E9C"> 4017060C </Location> </Patch>
Changes PA*Y to (PA+y)/2 *PA in the Chakra formula. Still does all the other stuff Chakra does (MP heal 1/2 that amount, boost with martial arts, doesn't reverse on undead, etc).
Quadratic Faith based heal:
<Patch name="Quadratic faith based heal"> <Description>Healing formula = fa ((MA+Y)*MA/2), accepts status proc</Description> <Location file="BATTLE_BIN" offset="121F00"> 3017060C </Location> <Location file="BATTLE_BIN" offset="121F08"> F121060C </Location> </Patch>
This is a quadratic healing spell, replaces formula C. Also replaced the useless elemental calculation with the much more useful ability to accept status procs. So you can create heal spells that proc positive statuses! :)
**Improved** Now procs 19% instead of 100%
Quadratic Draw Outs:
<Patch name="Formula 20 - Draw out damage change"> <Description>Changes Formula 20 (Draw out damage) to (MA+Y)*MA/2</Description> <Location file="BATTLE_BIN" offset="1225D4"> 3017060C </Location> </Patch>
<Patch name="Formula 21 - Draw out MP damage change"> <Description>Changes Formula 21 (Draw out MP damage) to (MA+Y)*MA/2</Description> <Location file="BATTLE_BIN" offset="122604"> 3017060C </Location> </Patch>
<Patch name="Formula 23 - Draw out healing change"> <Description>Changes Formula 23 (Draw out healing) to (MA+Y)*MA/2</Description> <Location file="BATTLE_BIN" offset="12268C"> 3017060C </Location> </Patch>
Faith based Quadratic damage (formula 08):
<Patch name="Formula 08 - Faith based damage"> <Description>Changes Formula 08 to use fa * (ma+y)*ma/2</Description> <Location file="BATTLE_BIN" offset="121D9C"> 3017060C </Location> </Patch>
On request - this changes formula 08 to do quadratic damage with the faith calculation.
Physical damage with spell proc:
<Patch name="Formula 57 (Please Eat) deals physical damage, spell proc, element"> <Description>This turns formula 57 (Please Eat) to physical evade, (pa+y)*pa/2, status proc,
When using this formula, Y = power of spell, inflict status = the spell proc'd by this ability (in hex, max ff). It works kinda like formula 02, only scales better on monster skills and accepts elements. I put it over Formula 57 because I wasn't using it and needed something that's a monster of a code to fit this. If you're still using 57, You can change the offset to fit it over a different monstrous code, or put it in free space and have one of the blank formulas jump to it if you wish.
When using this formula, Y = power of spell, inflict status = the spell proc'd by this ability (in hex, max ff). It works kinda like formula 02, only deals magic damage, scales better on monster skills and accepts elements. I put it over Formula 63 (vanilla throw) because I wasn't using it and needed something that's a monster of a code to fit this. If you're still using 63, You can change the offset to fit it over a different monstrous code, or put it in free space and have one of the blank formulas jump to it if you wish.
Now you can create a Blood Suck that doesn't deal unevadable fractional damage to bosses! This spell does (MA+Y)*MA/2 damage, can be evaded, can critical, drains HP, and adds a status effect at 100%.
Formula 2f/30 fix:
<Patch name="Formula 2F (Absorb MP) uses Weapon Damage routine"> <Description>This allows Formula 2F (Absorb MP) to accept status procs (100%) and to be used as a monster skill.</Description> <Location file="BATTLE_BIN" offset="122C68"> 8E21060C 00000000 AD1F060C </Location> </Patch>
<Patch name="Formula 30 (Absorb HP) uses Weapon Damage routine"> <Description>This allows Formula 30 (Absorb HP) to accept status procs (100%) and to be used as a monster skill.</Description> <Location file="BATTLE_BIN" offset="122CA8"> 8E21060C 00000000 AD1F060C </Location> </Patch>
As description says. This allows formulas 2f/30 to accept status procs at 100% and be used as a monster skill; therefore making it more usable than the original formulas. :) If the Weapon XA/YA rewrite hack is used, it can also accept a Y value.
Formula 42 does magic damage instead of physical:
<Patch name="Formula 42 does magic damage"> <Description>Formula 42 changed to MA*Y damage to target, MA*Y/x to self</Description> <Location file="BATTLE_BIN" offset="123184"> 2517060C </Location> </Patch>
I wrote over formula 08 because it's the shortest formula I wasn't using that is of sufficient length to hold this formula. To change the formula you write over, change the offset.
This will only animate the 2nd ability, but the damage of the formula will take place as well as effect/damage of second ability. This can be used to create stuff like damage + item/stat break procs, and other things that can't normally be done with a regular formula. The damage portion accepts elements, physical evade, and is affected by compatibility; but ignores attack/defense up modifiers and protect/shell.
Gravi2 applies status effect 100%:
<Patch name="Formula 17 = Gravi2, status 100%"> <Description>Drops HP to 1, Faith based accuracy. Adds status at 100% upon success.</Description> <Location file="BATTLE_BIN" offset="12225c"> E8FFBD27 1000BFAF 7322060C 00000000 05004014 00000000 BB19060C 00000000 AD1F060C 00000000 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
Looking for a cruel way to torment your players? Or just a way to get the AI to use Gravi2 in a more appropriate/interesting way? Say no more. This is Faith based accuracy (Fa(MA+x)%), will add a status effect at 100% upon success. A milder use for this would be to set it to dispel. Or you can create a meaner Poison/Frog.. Plenty of evil uses here. ^_^
Exactly as description says - Heals MP, Procs status indexed on spell at 19%. Replaces formula 27. As always, to replace a different formula, change its offset.
Mana Bomb:
<Patch name="Formula 0E = Mana Bomb"> <Description>Deals damage equal to current MP of caster to target, with MP cost of damage dealt.
Accepts elements. Disable self-targeting on this formula! Credit goes to Pride for rewriting this so it
Replaces Formula 0E. As usual, to replace a different formula, change the offsets and/or jump from a blank. Exactly as description says, deals damage equal to MP of caster with effective MP cost of the damage dealt. Accepts elements. Do not allow self targeting (will just display 100% and deal the mp damage if you do).
This replaces formula 15. As usual, to change the formula affected, change the offset. This deals fractional damage (y%), at the faith based accuracy f(ma+x)%, and 100% status indexed if the formula hits. Immortal targets are immune. Will display a 100%, but have no effect whatsoever if you target an immortal target with it.
Immortal check routine:
<Patch name="Immortal Check Routine"> <Description>Routine causes attack to fail if unit is immortal. Required for several formula hacks,
This routine causes attacks to fail if target is immortal. It is required for some of my formula hacks, as noted in their description. If you want to edit formulas to use this yourself, put the following near the beginning of a formula (before what you want the formula to do):
jal 0x001522d0 nop bne r2,r0,0x ? (replace ? with what you need) nop
Branch goes to end of formula, lw r31,0x0010(r29) in most vanilla formulas
This replaces formula 3f. Works like Endeavor in the Pokemon games (changes the target's HP to match the caster's HP). It will heal the target if target hp < caster hp, and will deal damage otherwise. Does not display the effect it has, just displays "100%" if you can hit the target, and "0%" if target is immune. Requires immortal flag check routine (so bosses can be made immune). I haven't fully tested if this formula would overflow in extremely unlikely situations (such as boss vs. boss with >32768 hp), but for normal/reasonable numbers it works as expected. :)
Formula 28 = Hybrid Deluxe:
<Patch name="Formula 28 = Hybrid Deluxe"> <Description>Uses vanilla geomancy routine. Interprets patcher flag "Magical attack" as applying M-ev, Shell, etc. and "Physical attack" as applying P-ev, Protect, etc. Neither checked will make an attack that ignores defense and evade. DONT CHECK BOTH! Accepts element and status.</Description> <Location file="BATTLE_BIN" offset="122870"> E8FFBD27 1000BFAF 5017060C 00000000 1980023C D2F34290 00000000 01004230 09004014 00000000 4421060C 00000000 17004014 00000000 1518060C 00000000 B722060C 00000000 1980023C D2F34290 00000000 02004230 07004014 00000000 6E21060C 00000000 09004014 00000000 D121060C 00000000 FF17060C 00000000 DF21060C 00000000 F121060C 00000000 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
This replaces formula 28. Uses vanilla Geomancy formula routine - (pa+y)/2 * ma. This allows you to create attacks that have properties of both physical and magical attacks depending on which flags you check off, or to create a defense/evade ignoring attack that is based off a character's pa/ma and can accept elements and status. As description says, check "magical attack" to use m-ev, shell, etc. and "physical attack" to use p-ev, protect, etc. Check neither to ignore defense/evade. DON'T CHECK BOTH! (doesn't work). This formula accepts elements and status effects (19% proc), can't crit.
**Note** Evade isn't working properly on here, a rewrite is in the works.
This is pretty much if you want enemies to use vanilla's elixir effect and give it a miss chance, not reverse on undead, not tie it to the item skillset, and proc a status. Could also be used if you want your players to be OP as well. 999 hp/mp heal can be changed to any constant you want, if you want it to be more balanced for player access. Change the bold number to what you want, bytes reversed (E703 = 0x03e7 = 999 in this example.)
Formula 54: Damage = Caster max MP - Caster current MP
This pack of hacks will change all the formulas in the game that are in the format w * (w+y)/2 to w * (w+y), where w = pa or ma, and y = patcher value:
<Patch name="Store PA and PA+Y"> <Description>Changes all instances of PA * (PA+y)/2 into PA * (PA+Y)</Description> <Location file="BATTLE_BIN" offset="11ed2c"> 00000000 </Location> </Patch>
<Patch name="Store MA and MA+Y"> <Description>Changes all instances of MA * (MA+y)/2 into MA * (MA+Y)</Description> <Location file="BATTLE_BIN" offset="11ecec"> 00000000 </Location> </Patch>
<Patch name="Store MA and PA+Y"> <Description>Changes all instances of MA * (PA+y)/2 into MA * (PA+Y)</Description> <Location file="BATTLE_BIN" offset="11ed6c"> 00000000 </Location> </Patch>
These create a formula that divides the final damage by 2:
<Patch name="Formula 5e - Magic, divide damage by 2"> <Description>Divides final damage of Formula 5e by 2 (default with vanilla routines is same as truth formula divided by 2). Requires elemental magic, divide damage by 2 routine.</Description> <Location file="BATTLE_BIN" offset="123ab0"> DC77050C 00000000 </Location> </Patch>
<Patch name="Formula 4e - Elemental physical, divide by 2"> <Description>Changes formula 4e to a physical damage formula (default with vanilla routines is same as punch art formula divided by 2). Divides final damage of Formula 4e by 2. Requires elemental physical, divide damage by 2 routine.</Description> <Location file="BATTLE_BIN" offset="123428"> 4421060C 00000000 05004014 00000000 0078050C 00000000 00000000 </Location> </Patch>
The purpose of these hacks is to create damage/healing that scales better for the entire course of the game for general use, while preserving the old formulas as an option for if you want an attack that's weaker than W^2, but still scales well throughout the game.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on November 17, 2016, 12:39:19 am
New formula time! This one needs a bit of a tutorial how to use it. It replaces formula 11 (which does nothing anyway). Credit goes to Glain for helping me fix it. Damage portion accepts evasion, elements, 19% status proc. Patcher X and Y values are interpreted as the stat or status effect byte that you want to use, and the value you want to assign to that byte, respectively. Convert all values to decimal (regular numbers), not hex. For example, if you want to make the ability raise the user's MA by 1: X = 21, Y = 129.
<Patch name="Formula 11 = MA^2 to target, effect indexed to caster at fa% chance"> <Description>Credit goes to Glain for helping me fix it. Damage portion accepts evasion, elements, 19% status proc. Patcher X and Y values are interpreted as the stat or status effect byte that you want to use, and the value you want to assign to that byte, respectively. Convert all values to decimal (regular numbers), not hex. For example, if you want to make the ability raise the user's MA by 1: X = 21, Y = 129. For more details see post on FFH.</Description> <Location file="BATTLE_BIN" offset="122124"> 56780508 00000000 </Location> <Location file="BATTLE_BIN" offset="f7134"> 1980013C 942D228C 00000000 37004290 00000000 D03822A4 CE3822A4 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="f7158"> E8FFBD27 1000BFAF 6E21060C 00000000 24004014 00000000 4D78050C 00000000 5922060C 00000000 1980073C 942DE68C 64000434 5C00C390 2600C590 40006230 18004014 80006230 05004014 00000000 3378010C 00000000 12004014 00000000 1980073C 8C2DE68C F938E390 FA38E490 01000534 0000C5A0 21086600 000024A0 17000134 23106100 04004018 00000000 08000134 02000010 00000000 01000134 2500C1A0 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
Documentation of relevant stat/status bytes:
0x019e/0x12 - SP Change 0x80 - Bonus Flag 0x019f/0x13 - CT Change 0xFF = "Quick" 0x7F = "CT0" 0x80 - Bonus Flag 0x01a0/0x14 - PA Change 0x80 - Bonus Flag 0x01a1/0x15 - MA Change 0x80 - Bonus Flag 0x01a2/0x16 - Brave Change 0x80 - Bonus Flag 0x01a3/0x17 - Faith Change 0x80 - Bonus Flag
Increase/decrease of stat - X = stat byte, Y = effect. Keep in mind that in order to increase stat, value must be >128 (0x80 is "bonus flag"), otherwise would decrease. Speed - X = 18, Y = 1 (decrease by 1), Y = 129 (increase by 1) CT - X = 19, Y = 255 (Quick), Y = 127 (ct 0) PA - X = 20, Y = 1 (decrease by 1), Y = 129 (increase by 1) MA - X = 21, Y = 1 (decrease by 1), Y = 129 (increase by 1) Br - X = 22, Y = 1 (decrease by 1), Y = 129 (increase by 1) Fa - X = 23, Y = 1 (decrease by 1), Y = 129 (increase by 1)
Status inflict/remove - X = effect group byte, Y = add together the statuses you want. Unfortunately they must be on the same byte to work. Examples:
Add Haste + Shell: X = 30, Y = 24 Add Faith + Reflect + Charm: X = 31, Y = 162 Remove Darkness + Silence: X = 33, Y = 40 Remove Oil: X = 34, Y = 128
Remember to convert all hex in the documentation to decimal in the patcher x/y values! Don't use values that don't make sense with these instructions, or confuse hex with decimal, or you might get strange bugs! XML in first post updated with this! :)
**EDIT** 2 new formulas! :)
Psycho Shift (transfers active status effect to target at F(MA+X)%)
<Patch name="Formula 58 = Psycho Shift"> <Description>Hit F(Ma+x)%. On a successful hit, user will transfer all active status effects to target, and cancel them on self. Affects all statuses (positive or negative). Will not cancel innate status, or inflict statuses to invalid targets (such as inflicting poison to a unit immune to it). </Description> <Location file="BATTLE_BIN" offset="123824"> E8FFBD27 1000BFAF 8922060C 00000000 25004014 00000000 1980013C 942D228C 902D238C 8C2D2A8C 21200000 58004590 59004690 5A004790 5B004890 5C004990 1B0065A0 1C0066A0 1D0067A0 1E0068A0 1F0069A0 200045A1 210046A1 220047A1 230048A1 240049A1 C912060C 00000000 1980013C 8C2D258C 902D238C 09004010 00000000 01000434 0000A4A0 000064A0 08000434 2500A4A0 250064A0 02000010 00000000 000062A0 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
Foul Play (Physical attack, uses target's PA instead of caster's):
<Patch name="Formula 61: Damage = Target PA * (PA+Y)"> <Description>Physical attack, uses target's PA instead of caster's. Does not accept evasion or elements, but does accept status procs and can crit.</Description> <Location file="BATTLE_BIN" offset="123b18"> E8FFBD27 1000BFAF 834C050C 00000000 A921060C 00000000 3021060C 00000000 03004014 00000000 AD1F060C 00000000 1000BF8F 1800BD27 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="ec20c"> 1980013C 982D228C 902D248C 36004290 FA382390 CE3822A4 21104300 D03822A4 80000534 250085A0 0800E003 00000000 </Location> </Patch>
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on December 03, 2016, 11:26:35 am
More new formulas!
This formula will remove any active statuses on the target and apply them to self. Accuracy is Fa(MA+x)%
<Patch name="Formula 13 = Fa(ma+x)% hit, steal status from target"> <Description>Will take status that is active on target, cancel it, and apply it to
This formula will steal a random item from the target. If the target has Maintenance or is naked, it'll do MP damage instead. It uses vanilla Geomancy routine (which with my Formula Rebalance Pack turns into (PA+Y)*MA). Credit goes to Glain for helping me write the stealing inner routine. :)
<Patch name="Formula 53 - Steal random item from target, MP damage if unit has Maintenance or is
naked"> <Description>Requires "Convert Damage to MP Damage routine" and "Steal/Break random slot inner
Also it's time to get rid of Distribute. Through a bunch of testing, I've figured out that Distribute was causing problems for many of my new reactions. This clears up a bunch of space, fixes Distribute bugs on any of the Multi-Reaction Deluxe reactions, and clears Distribute's slot for use for something else. Distribute's slot is not compatible with Multi-Reaction Deluxe, but it is compatible with another hack I'll post after this one:
<Patch name="Disables Distribute"> <Description>Completely disables the effects of Distribute. This frees up Distribute's slot for other use (not compatible with Multi-reaction deluxe without further coding), and eliminates any weirdness/bugs that are related to use of Multi-reaction deluxe.</Description> <Location file="BATTLE_BIN" offset="125c94"> 2B330608 </Location> <Location file="BATTLE_BIN" offset="1262a8"> 0800E003 00000000 </Location> <Location file="BATTLE_BIN" offset="124168"> 812C0608 00000000 </Location> <Location file="BATTLE_BIN" offset="115bbc"> 30F30508 00000000 </Location> </Patch>
This changes Distribute to Synchronize - if a unit is targeted with a status effect, it will react by applying all its current effects to the target. It reacts at a Br% as usual. Requires Disable Distribute, and this code will break Secret Hunt/Train's code.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Timbo on December 03, 2016, 01:01:03 pm
Wow! These are great. I especially like the Status Steal formula. Can you make one without Faith?
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on December 03, 2016, 10:10:31 pm
Since you didn't specify whether you want 100% or MA+X% accuracy, I provided both. :) Copy/paste one of these in place of the larger bit of code in the hack for this formula.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on December 05, 2016, 12:42:58 am
New stuff! :)
Formula 18 = Universal stat change formula at MA+X%. This can create any amount of bonus/penalty to PA, MA, Speed, CT, Brave, Faith, and can also be used for Quick and CT = 0. Can also be used to level up +1 or level down -1. Directions for use in description:
<Patch name="Formula 18 = universal stat change at MA+X%"> <Description>Directions for use: MA+X% is accuracy. Y is the stat that you want to affect. Use Y= 16 for level up, 17 for level down, 18 for speed, 19 for CT, 20 for PA, 21 for MA, 22 for Brave, 23 for Faith. DO NOT USE OTHER VALUES FOR Y OR BAD THINGS WILL HAPPEN! Use the status effect field as what you want for the bonus/penalty amount in hex. Add +0x80 for bonus amounts (example: 81 = +1), otherwise numbers up to 0x7f are penalty amounts. If changing CT, you can use FF for Quick and 7F for CT = 0. Level up requires 80, and level down requires 1. Do not use other values in combination with 16/17 for the status byte or bad things will happen!</Description> <Location file="BATTLE_BIN" offset="12229c"> F5480508 00000000 </Location> <Location file="BATTLE_BIN" offset="eb3d4"> E8FFBD27 1000BFAF A122060C 00000000 0A004014 00000000 1980083C FA380291 902D038D FB380491 21084300 000024A0 01000534 000065A0 250065A0 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
This version of the same hack includes a check for an ability to grant immunity to stat penalties:
<Patch name="Formula 18 = universal stat change at MA+X%"> <Description>Directions for use: MA+X% is accuracy. Y is the stat that you want to affect. Use Y= 16 for level up, 17 for level down, 18 for speed, 19 for CT, 20 for PA, 21 for MA, 22 for Brave, 23 for Faith. DO NOT USE OTHER VALUES FOR Y OR BAD THINGS WILL HAPPEN! Use the status effect field as what you want for the bonus/penalty amount in hex. Add +0x80 for bonus amounts (example: 81 = +1), otherwise numbers up to 0x7f are penalty amounts. If changing CT, you can use FF for Quick and 7F for CT = 0. Level up requires 80, and level down requires 1. Do not use other values in combination with 16/17 for the status byte or bad things will happen! This version of the hack includes a check for a support ability (coded to 0x01c8 slot) that blocks all stat penalties.</Description> <Location file="BATTLE_BIN" offset="12229c"> 59770508 00000000 </Location> <Location file="BATTLE_BIN" offset="f6d64"> E8FFBD27 1000BFAF A122060C 00000000 15004014 00000000 1980083C 982D068D FB380491 8F00C690 FA380291 2000C630 0700C010 902D038D 80008630 0400C014 00000000 C310060C 00000000 06000010 00000000 21084300 000024A0 01000534 000065A0 250065A0 1000BF8F 1800BD27 0800E003 00000000 </Location> </Patch>
This changes Counter to be a bit more badass... :) Counter works as normal at Weapon Range, but it works as Counter Magic functionality for the Countergrasp flag. So for example if you flagged Earth Slash as Countergrasp, and you hit a unit with Counter, it will Earth Slash you back!
<Patch name="Counter = physical counterpart to Counter Magic"> <Description>Counter will counter with the same move used on target, going by Countergrasp flag.</Description> <Location file="SCUS_942_21" offset="4F3E4"> 29 </Location> <Location file="BATTLE_BIN" offset="1173d4"> 0B000534 00000000 94F9050C 01000734 </Location> </Patch>
Fixed a bug with it. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on December 13, 2016, 12:45:59 am
This is a fairly common request fulfilled. :) Changes some of the more useless values for setting level in the entd (party +50 and up) into party level -x. Will set lv = 1 if lv - x < 1. This copies over the code for party lv - random, so it will now interpret that (along with party lv) as party lv, and since party lv +50 is the starting "0" point for this code, it is also interpreted as party lv. Set levels and party +1-49 work as normal. Thank you Glain for telling me what entries in patcher correspond to what values. :)
<Patch name="Party lv+ 50+ interpreted as party lv - x"> <Description>Party level, Party lv - random, and Party lv +50 are interpreted as Party Level. Party Level +51 is interpreted as Party Level -1, Party Level +52 is interpreted as Party Level -2, etc. through party Lv +99 is interpreted as Party level -49. Set levels and party +1-49 are interpreted as normal.</Description> <Location file="SCUS_942_21" offset="4b5dc"> FF000332 03006010 FE000234 06006214 6400622C 0680033C 08636390 00000000 9D6B0108 00007034 11004014 21180002 0680023C 08634290 9600042E 09008014 00000000 96000434 23200402 23804400 1100001E 00000000 9D6B0108 01001034 </Location> </Patch>
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Timbo on December 16, 2016, 10:20:04 pm
With your oil/undead hack work the same for innate undead creatures, regular units inflicted with Undead status, and units equipped with the Cursed Ring? Does it stack with other elemental weaknesses/immunities/absorptions or overwrite them?
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on December 17, 2016, 08:49:22 am
Works for all undead (innate/item/casting undead). Overwrites items' effects if it has to do with Dark/Holy for undead, and Fire for oil; otherwise doesn't (so you can have an undead guy who's immune to ice for example).
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Timbo on December 17, 2016, 01:03:38 pm
Quote from: Emmy on December 17, 2016, 08:49:22 am Works for all undead (innate/item/casting undead). Overwrites items' effects if it has to do with Dark/Holy for undead, and Fire for oil; otherwise doesn't (so you can have an undead guy who's immune to ice for example).
You put a lot of thought into this hack. Very nice.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on April 19, 2017, 12:39:03 pm
By request, posting here the Monster Tactics hack folder. :) This includes many updated versions of my hacks, new hacks, and modified versions of others' hacks. :) It also includes other people's hacks, since it is what is used in MT and not just my own stuff.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Lloyd2k4 on July 04, 2017, 06:10:19 pm
Great hacks! I'm personally using the MP Regen from Wall and MP Poison from blank status hack, but I'm encountering some issues with the Wall replacement.
Whenever I have a unit with the new status that was previously Wall, the character cannot be healed by any potions or anything, and that unit's turn is sometimes skipped. I've been trying to figure out what's causing this. I figured it's some old setting with the Wall status that I may need to tinker with (potentially in patcher?). Does anyone have any insight?
Does the Mist/MP Poison patch have a dependency on another Wall-related hack?
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on July 05, 2017, 10:02:49 am
You have to disable wall's vanilla effect.
Quote
0x124AE2 change 40 to 00
0x137F56 change 80 to 00
This makes the status itself blank, but allows the CT to be used elsewhere, or you can code your own status effect if you really wanted to.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Lloyd2k4 on July 05, 2017, 11:42:16 am
Is that the same as the 'Wall loses all hardcoding' ASM hack? I'm using that right now in conjunction with the MP Refresh/Poison, and I haven't encountered any issues yet.
I only ask because there doesn't appear to be an XML for that hack you just showed, unless it is literally the same as the above mentioned.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Heisho on July 26, 2017, 02:50:39 pm
These are great hacks Emmy, thanks a lot.
I don't know if you are willing to fulfill a request but here is it: Since I'm not going to use Geomancy at all I was wondering if Counter Flood can behave like Counter Magic so we can counter abilities with the Counter Flood flag.
Once again thanks for the hacks, especially White Wind and Psyco Shift which are going to be part of my Blue Mage class.
Cheers
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Emmy on July 26, 2017, 11:36:20 pm
This hack will make Counter Flood cast any indexed ability with the Counter Flood flag as trigger. If you're not using geomancy at all, this means you can change it to cast any other ability in the game.
<Patch name="Counter Flood uses Flood Ball"> <Description>This allows for Counter Flood to work by using an ability instead of vanilla geomancy. If you changed geomancy with my other codes, this is required to make Counter Flood work.</Description> <Location file="SCUS_942_21" offset="4f3df"> 29 </Location> <Location file="BATTLE_BIN" offset="11731c"> 21202002 0B000534 F7F80508 7E000634 <!-- Ability used is indexed here (0x007e default) --> </Location> </Patch>
Change the 7e00 to reference whatever ability you want (bytes reversed). For example if you want it to cast ability # 0123, replace 7e00 with 2301.
I'll have to take a better look at the code to figure out if what you want can be done. Just got home from work now/not really in the right mindset to do asm.
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Heisho on July 27, 2017, 01:49:14 am
This is remarkable and very close to what I thought would not be possible.
Once again Emmy you deliver great. Even if what I wanted cannot be done this still can play very well on my project.
Thank you very much. Get some well deserved rest. :)
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Myrmidon on February 22, 2018, 01:15:50 am
love these, plus the others in Monster Tactics, and want to use some (many) for my hack.
How would I move Anger Point over to another skill? I need M.Talk for my hack, and I'm not exactly using the math blocking skill you've got there. I'd love to keep Secret Hunt, too, honestly.
Unless the Talk formula just affects monsters now, in which case, awesome, no worries. Still like to keep Secret Hunt in, though (but I love that poisontouch skill)
I've editied this like, 4 times. just gonna work around, still, love these ASMs, and they deserve to be on the front page, at least - since they're not linked to in the big ASMs stickied thread
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Orkney on May 23, 2020, 12:01:53 pm
Hi,
Not really sure to post this worksheet here.
This is a little sheet i've done for the Magic evasion by Job hack.
Great!, thanks a bunch for making that hack dummy friendly pal.
Keep up the good work!
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: Bora on July 24, 2022, 06:06:38 pm
Hi Emmy,
I have a bit of request with regard to your Move XX Rewrite. Can you rewrite the patch into which the Move XP/JP would have the vanilla effect, but the other changes you made would still be the same?
I like the idea of move XX up ability to stack but I find the PA/Speed changes to be too much on what I plan to do. :lol:
If it's possible, thank you. If not, I'll just adjust what I have in mind.
Thank you. :D
Title: Re: Emmy's ASM thread (better stuff for monsters!)
Post by: greentealatte on December 29, 2023, 11:14:10 pm
Hi Emmy,
I am interested to use the multi-reaction deluxe ASM. E.g i might want to change PA save to cast an ability. How should i be editing the ASM code that you provided in the main thread?
edit: I figured out - the documentation in detail is in page 3. I have written some scripts to automate the process. Will share once i have cleaned everything up