Whenever you select somewhere to walk to, mines will spawn at random on traversable tiles. They are deleted after you move somewhere such that it will almost never hit enemies.
They spawn at a rate of X% of tiles in the map. I put it to only 2% here, for which this hack was made: Feature (Not a Bug)
It is pretty annoying at 2%, so I don’t recommend much higher.
This is more of an unquality of life feature, and probably won’t be enjoyed, lol.
PhantomSentine’s GroupAI made it so if you attack or are attacked by a unit that is part of a group (using AI4 for groups), it would aggro all of them.
However, this doesn’t stop you from abusing the AI. You could still lure or split up enemies and nothing would aggro until you or the opponent attacked.
Therefore, I’ve hooked AiSetDecision just after FillAiDangerMap is done and coordinates are decided on to see if the Ai will walk somewhere dangerous, and if so, aggro the group. This makes group AI a bit more aggressive and seemingly more coordinated. Previously, one unit from the group would usually charge ahead “Leeroy Jenkins” style while the rest of the party would follow next turn.
You may also want to consider your ai3 settings and whether they have a penalty to avoid dangerous tiles, unlike one of the defaults below:
The bug was in group ai. Vanilla does not have group ai: it has leader ai, which only stops units from attacking unless a unit is in range of the commander. Group ai leaves the leader ai untouched.
FillAiDangerMap is an expensive function called before each enemy moves. Gamma, StanH, and 7743 have all worked on optimizing it.
This hack stops the function from being called when the results aren’t actually used.
The above ai3 defaults do not care about the danger map, so if you use any of these, this hack will reduce ai lag by about ~3 - 12 frames per enemy. The amount of lag saved depends largely on the map size, number of units, and whether or not you are using the latest AiFillDangerMapFix patch.
Edit: Fixed a bug 3 hours after posting this.
7743’s testing benchmarks this as saving about 4 frames per enemy (with the AiFillDangerMapFix patch) which equates to about 7 frames per enemy in vanilla.
GroupAI v2 has a conflict with this hack.
Therefore I’ve edited GroupAI v2 slightly to not always trigger when using DecideOnDangerMap. I’ve made it so that if you’re using an ai3 that does not care about the penalty for the attack power of opponents, it will not aggro the group.
Edit: I hate to keep bumping my post, but 7743 found a game crashing bug with this hack this morning and I’ve since redone the hack to avoid this bug.
It’s actually really nice for romhacks with more weapon variety and held items, since only having 5 slots and needing to leave 1 or more open really hurts thieves in those, so don’t sell yourself short, great work!
This is going to be a “for a friend” post but actually for real since I’m not using it, but as a heads up the space you’re inserting the proc into is completely skipped by popup rework (and thus skillsys)
// A re-do of my first ever hook into proc code :)
ORG 0x9A3600
// Replace the weapon broke/wrank got popup calls with construction of the anims off popup loop
PROC_NEW_CHILD_BLOCKING(gProc_PopR_AnimsOnWrapper)
PROC_JUMP(0x9A3620)
Thanks, @Pikmin1211! I should’ve tested it with skill sys, too.
To anyone who already installed it: don’t worry, you don’t need to revert to a backup or undo anything. You can re-install the patch or change the ProcJump to 0x9A3618:
Did some work getting @StanH’s incomplete TruePartySplit hack to a semi-usable state, as it sadly hasn’t been touched in over a year, I think. It’s really cool though, so I thought I’d share what it can do and what was planned.
The idea is to have up to 8 parties and freely manage your units. I debugged it and made it so pressing start ends the menu and actually sends units to their respective parties.
It was intended to also have units that are forced to one party or another, but I couldn’t get it to work properly. Here I have Eirika and Ephraim as forced to party A/B respectively, but nobody is able to be moved now for some reason. I don’t think whether a unit is forced into their party or not is being initialized at all, which breaks things down the line. When I have no units forced to a party, it works fine.
It probably ignores dead units, and as lords dying causes a game over, you could probably just set them as dead via the UNCM patch and revive them after the menu. This won’t cause a game over - don’t worry.
Additionally, it doesn’t care if you send all your units to one party or another. lol
you may also need a way to stop the player from sending all their good units to one side and softlocking themselves
It would also be nice to be able to press R on a unit to view their stats, or have a way to manage their items. But it’s already a pretty complex hack, so I’m just grateful Stan made this at all.
Please note that this hack requires 39 bytes of ram allocated, with your custom address defined in the installer. Without this, parties won’t be saved between chapters, although with only 2 parties and some convoluted eventing, it might be usable…
I recommend editing EMS to save those 39 bytes. You’ll have to choose your ram location yourself.
oh god what have I done
this isn’t even narrowfont lol
Gif
While I have tested this in many circumstances, this has an effect on all R-text in the game. Therefore it needs extensive testing to find the rarer cases of R-text that could break some graphics.
FAQ
OMG i found a bug your asm ate my dog and vomited on my screen?
Tell me exactly how to reproduce the graphical error, or view the details on solving it below:
Details
At the top of the installer are some exceptions I’ve already found: SaveMenu, ChapterMenuUnit, and ChapterMenuStatus. While these procs are active, it won’t use extra VRAM for R-text.
Adding the Red Square address to the ProcExceptionsList would make it act like vanilla while the TradeMenu proc is active, solving the graphical bug that was found.
This was a ton of work and took many hours to do. Please be sure to credit me when used (this goes for any asm hacks and FEBuilder patches that I’m credited in too, of course).
Enjoy!
Edit:
7743 added this as an FEBuilder patch. He also made it only hide the trade partner’s portrait while actively viewing R-text for weapons with 3 lines.
Super cool to see this come to life. This was something Stan started hashing out for LoT (RIP).
Think this kind of feature is cool and can create a lot of replayability. Hoping to see this space explored more and hacks try out this tech in their design.
Have you ever wanted to move the currently acting unit, but experienced this instead?
While the vanilla command SET_ACTIVE 0 works by abruptly exiting the unit’s action, it won’t end player phase if it was the last unit to act, and it is buggy in that the cursor jumps, it’s preventing B presses, and it’s showing rainbow tiles if you want the unit to move again. UNCM patch can solve some of this, but may not be ideal.
Override Actor Coords
Given your desired coordinates in memory slot B, this patch prepares everything as if you had moved there. Use it before the movement occurs from the ENUN command.
It also works with “When player unit is moved to coordinate” type events. FEBuilder recommends not using these because vanilla fe8 doesn’t use them. They seem to work fine from my experience, though.
For example, here I have it take over your movement and send you to the nearest free land coordinate when you go into the current of water. You can still perform your action this way. I reset tiles moved to 0 as part of this, so the Charge skill will not get a bonus. This is so that pressing B will work as expected and not send you back to your starting coordinate.
If you don’t want the menu to appear in this case, use ASMC 0x804EF21 (EndAllMenus) and ASMC 0x804E885 (ClearBG0BG1) at the start of your event. This would essentially make “When player unit is moved to coordinate” events into customizable traps.
For some reason traps are hardcoded to use size 1 for ballistas and size 0 for everything else (eg. light runes). This fixes everything but ballistas to use whatever size you set in your SMS table. Compatible with or without Sme’s TrapRework (although there’s not really any point in using it without TrapRework).