Sme’s ASM and Miscellany

I don’t even know where I’d start for making a weapon be more than one weapon type simultaneously, lol. If that were to be a thing it both could and probably would exist outside the umbrella of a magic sword rework anyhow. The closest to this is as I said, registering a magic sword as an anima magic type in the hack for that since it’s a sub-weapon type that’s checked separately from normal weapon types.

By choosing whether or not it stays the assigned weapon type in melee, I’m referring to the part where you set the magic type of the weapon. Normally at 1-range it’s considered a sword, but you can set a thing to instead use the magic type at 1-range.

1 Like

Alright, another update for Magic Sword Rework, now it can hit defense. The only file adjusted is the installer event file since all it took was changing a handful of bytes in the middle of an existing function. However, apparently the hit highest/lowest defensive stat settings always hit res not as a side effect of being unable to hit defense but as a side effect of something else, so for the time being they are technically non-functional. Should be a lot easier to debug and fix than the not hitting defense part though, but still wanted to push out the larger fix as soon as possible.

2019-03-10_21-08-16

Unless my math is wrong, 8 str + 8 mt + 1 WTA - 5 def = 12 atk at melee, 8/2 str + 8 mt - 2 res = 10 atk at range.

EDIT: Well, that fix was a lot easier than I thought it would be. Grab the updated dmp from the download and everything should be working now.

3 Likes

It’there’s another thing you may not notice, if all magic swords are attacked by magic.
The display of status page intelligence has not been updated to magic attack values.
The Dark Sword’s intelligence display address is 2A4B8 -11 and displays all magic attack data.6C_MV(%7D1FZ%7D%5BITPN%24~I%7D8VLU%2497C%7D1I6%60~LWB_9IFN8W%7DF

Made a variant of Magic Sword Rework that uses Res instead of Str/2, for compatibility with a Res as Mag hack. It’s in the preexisting MSR download folder (linked in OP) as separate files, you’ll need to change the filenames in the installer/of the files themselves if you want to use it instead of the default.

(re: above, that’s a vanilla thing; it’s calculated from static weapon stats and the damage it can deal is variable based on range and settings, so which to display it wouldn’t know. vanilla does this with magic swords normally, you don’t get the str/2 attack value there)

Been a while since I put anything here I’ve been working on, so thought it was about time for an update post.

Starting off, @Snakey1 did a version of Magic Sword Rework for the str/mag split that was recently completed. The relevant files have been added to the MSR folder and labelled appropriately.

Now, for some new stuff:

[ASM] ASMC Check Suite (FE8)

A set of 23 ASMC checks to supplement the existing event commands. The following checks are made available through these macros (thanks to @P33RL355 for writing the macros):

CheckLevel(Character)
CheckExperience(Character)
CheckMaxHP(Character)
CheckCurrentHP(Character)
CheckStrength(Character)
CheckSkill(Character)
CheckSpeed(Character)
CheckDefense(Character)
CheckResistance(Character)
CheckConstitution(Character)
CheckMovement(Character)
CheckInventory(Character,Item)
CheckSwordRank(Character)
CheckLanceRank(Character)
CheckAxeRank(Character)
CheckBowRank(Character)
CheckStaffRank(Character)
CheckAnimaRank(Character)
CheckLightRank(Character)
CheckDarkRank(Character)
CheckStatusEffect(Character)
CheckStatusDuration(Character)
CheckMagic(Character) //needs strmag split

No check for luck, since CHECK_LUCK is a vanilla event command. Note that CheckMagic is commented out by default, you’ll have to uncomment it if you want to use it. All of these can take either a direct character ID or 0xFFFF to use the active character; vanilla commands can also be told to use the character ID in memory slot 0xB, however these checks cannot.

Download

To install just #include the .event file, then you can use the macros in your events.

[ASM] Save Globals Through Suspend (FE8)

This hack will write global event flags to the save file whenever the game writes suspend data, which it does after every action a unit takes, as well as when you select Suspend from the menu. It lets you do cool things like this:

Note that you’ll need to unset the flag set that tells the game to go to the world map, or you’ll just immediately go to the world map upon reloading:
ENUF $89

Download

Once again to install just #include the .event file.

As always, let me know if there are any issues with any of these hacks.

9 Likes

Pretty big update to Escape and Arrive.

2019-08-13_17-57-56

Now they’re proper map objects which entirely removes the need for event ID toggles. Definitions are included in the installer for them. Everything else still works the same, but now you can have all 3 objectives in the same chapter at once.

11 Likes

Noob here, how do I install the escape/arrive condition? I’m using FEbuilder (not nightmare or buildfiles) & I’m not using the skills system.

edit:

4 errors encountered:
File EscapeEvent.event, Line 20, Column 1: No code named NoFade found.
File EscapeEvent.event, Line 30, Column 1: No code named NoFade found.
File Escape Installer.event, Line 40, Column 1: No code named jumpToHack found.
File Escape Installer.event, Line 5, Column 1: Symbol EscapeQuoteTable isn't in scope

I take it “NoFade” and “jumpToHack” are macros which I don’t have defined, and would the 4th error be connected to the .csv table?

I have none of the folders listed in your installation instructions (except for Escape/Arrive) & I assume it’s because i’m not doing buildfiles/don’t have skills system.

This may be exceedingly stupid, but would it work to just manually insert each of the dmp files?

I swear there was less information here when I last saw this and then I forgot to respond I’m sorry
NoFade is an EA stlib def, just add #include "EAstdlib.event" to the beginning of your file and that will fix that error; jumpToHack is a macro that needs you to #include "Extensions/Hack Installation.txt" to use. In a buildfile setting these would already be included elsewhere, so the installer here wouldn’t need them, so I forgot to add them, my bad. You’re correct that your fourth error is the CSV table, if you want to construct it without a CSV make a label in the installer with the table name and then put halfwords for text IDs in order of character ID.

1 Like

[ASM] Modular Changing Battle BGM (FE8)

This hack will let you specify an arbitrary number of character ID + song ID pairs for music to change after fighting the unit once, like the Demon King does in vanilla. Note the song ID you’re specifying is the version without an intro, you should set the version with an intro on the Boss Music List. Additionally, every one of these uses the same global event flag and as such using multiple in the same chapter may be difficult.

Download

7 Likes

Update for Magic Sword Rework

Thanks to help from @Snakey1 and @Runa, Magic Sword Rework should now be bug-free; previously there was an issue with hit lower/hit higher stat swords that they would only work for the attacker. Now they function properly no matter who is using them, as well as some Runesword hardcoding shenanigans turning every magic sword into a Dark weapon. Additionally, setting the Always Magic bit in the MSR table now has the added effect of also using Str/2 when attacking in melee though the previous behavior was not a bug, but a feature. As always, if you find any more issues please report them so I may fix them.
Updated are all 3 versions of Magic Sword Rework: Str/2 (Vanilla), Res as Mag, and Str Mag Split, as well as the .event installer.

7 Likes

Today in assembly hacks that literally no one asked for or will use…

[ASM] Arbitrary List of Classes With Dancer Music (FE8)

This hack allows you to define an arbitrary list of classes for whom the dancer music will play when dancing.

Here you can see the various scenarios without this hack vs with this hack.

Download

Next on my todo list for arbitrary lists for battle things is the effect where the Demon King forces animations on but for every class, so be on the lookout for that soon.

5 Likes

While I’m at it, I’ll release this too I guess

[ASM] Biorhythm (FE8)

This hack puts the Biorhythm mechanic from FE9/FE10 into FE8.

There are 7 biorhythm effect states: Worst, Bad, Poor, Neutral, Good, Great, and Best. All of these save for Worst and Best can be approached from either direction, making a total of 12 actual states. States begin from Worst, ascending at 0 and progress through to Bad, descending at 11 before looping back to 0. This makes Neutral, ascending be 3 and Neutral, descending be 9. The Hit/Avo bonus/buff you get from each can be defined in Biorhythm.event, as can the text ID of the name for each state. Note that whether the effect is positive, negative, or neutral cannot be edited from the .event file and are hardcoded to each state.

The Biorhythm Table is where you set each character’s biorhythm initial position and rate of progression. This table is indexed by character ID and has two values per entry: initial position and amplitude. The initial position uses the values as laid out above and the rate of progression, or “amplitude” of their biorhythm wave, is number of states to advance per turn * 4. This means an amplitude of 4 will advance 1 state per turn, an amplitude of 1 will advance 1 state every 4 turns, and an amplitude of 12 will advance one full cycle forward to the current position every turn. Using an amplitude of 12 and a neutral starting position will effectively act as if there is no biorhythm for the character you set it on.

Download

This does require Skill System by virtue of using its pre-battle calc loop to apply Biorhythm effects, as well as needing Modular Stat Screen to be on the menu. Included in the download is a readme with install instructions, the above usage explanation, and everything you’ll need to implement biorhythm yourself.

8 Likes

And sure, I’ll finish off tonight with a hat trick

[ASM] Character-Based Animation Forcer (FE8)

This uses the vanilla check for the Demon King class to force animations on against the final boss and expands it to an arbitrary user-defined list and also to characters instead of classes, as I figured having to make a unique class for everyone you want to force animations on for would get annoying and space-consuming very quickly.

Download

10 Likes

A pair of hacks related to the eggs of lovely and deadly gorgons.

[ASM] Deny Stat Screen Access (FE8)

In vanilla, you cannot view the stat screen of gorgon eggs with the R button, nor can you scroll to them from another stat screen of the same allegiance. This hack takes that functionality and expands it to an arbitrary list of classes. Unlike the hack below, this one is harder to change the requirements off of anything class-based, as various functions here are only passed the class data and not the character struct.

Download

[ASM] Deny Counterattacks (FE8)

The way gorgon eggs work is they always have the weapon they’ll have once hatched in their inventory. To prevent them from counterattacking when you attack them as an egg, there is a hardcoded check that disables their ability to counterattack. This hack extends that to an arbitrary list of classes. Additionally, this hack may be used as a jumping off point for applying this status in other circumstances.

Download

7 Likes

Could that deny counters ASM be expanded to make Firesweep weapons?

1 Like

You can already make uncounterable weapons without asm

2 Likes

But, doesn’t that force it into long-range battle anims mode? That itself could be a thing to change… :thinking:

[ASM] Dancer Ring Refresh (FE8)

Fairly self-explanatory, lets dancer rings refresh like Dance in addition to applying their effect.

rKgZip0fTc

Download

10 Likes

[ASM] Refuge (FE8U)

Something I saw done in the FE8J hack “The Nameless Heroes”, and here it is functionally recreated in FE8U. Refuge allows you to “rescue” yourself into another unit that is capable of rescuing you (if your con is less than their aid, you can Refuge into them).

Big thanks to @StanH, whose Heroes Movement Skills and general doc were an invaluable resource for seeing how target selection and unit actions work.
This hack requires Skill System for its post-action loop and Stan’s Unit Action Rework for implementing the refuge action itself (Unit Action Rework is included with Skill System).

Download

Installation instructions are included in the download package.

13 Likes

[ASM] Holy Blood (FE8)

Akin to FE4/FE5 and FE16’s systems comes holy blood. For each blood type, you can define:

  • Name
  • Description
  • Growth boosts for each stat
  • Whether or not it allows access to dragon veins
  • Holy Blood locks per weapon

You can give units major or minor blood, major blood causing an icon to appear on their status screen, doubling growth bonuses, and granting access to weapons locked to that blood type.

As an example, Iron Sword is set to be locked to Donate blood.

Download

Requires skill system’s weapon usability calc loop (this hack is the reason I made that calc loop in the first place), MSS, and dragon veins (which all come with skill system) to be fully featured.

13 Likes

[ASM] Status-Inflicting Weapons (FE8U)

Hacks for these have existed for a long time, but there is currently no version compatible with the skill system. This uses the proc skills loop to integrate with the skill system, so it is fully compatible.

Download

To install, just #include StatusWeapons.event and add Proc_StatusWeapons to the proc skills loop.
To make a weapon a status weapon, just give it weapon effect 0xD and put the ID of the status you wish to inflict at item data +0x22 (the second unused byte at the end of each table entry, the same one used by Item Effect Revamp). Statuses applied during battles are hardcoded to always last 5 turns; if you want to change this amount, the byte at 0x178EA is the duration shifted 4 bits left (the default value is 0x50 which equates to 5 turns, 0x30 would equate to 3 turns, etc).

Escape/Arrive Update

An update to Escape/Arrive has removed everything still tied to event ID flags. Additionally, I have created macros for easily implementing Thracian Escape. The macro EscapeCapturedCheck(charID,flagID) will check if the specified character is still on the map, and if so will REMA them and set the specified flag (It calls a macro event, so no worries about gigantic events for your chapter it’s only 6 instructions long). Implementing this has involved making some minor behind the scenes tweaks, most notably that characters are no longer REMA’d when escaping as they used to be. These updates are available at the download link in the first post and will be integrated into the skill system repository’s version of this hack soon.

8 Likes