Dragz’s Backstage

It helps a lot, thank you!

Either way my specific use case for forging involves completely repurposing durability, so any talk of EMS is all hypothetical for now. I’m sure I’ll need more help when the time comes, though.

2 Likes

Introducing Weapon Triangle Coefficients. This hack lets you set coefficients that multiply the weapon triangle hit/mt bonuses per difficulty. I actually made this hack several months ago but it wasn’t compatible with SkillSys and the code in general was just very shoddily-written. Now that I have more experience I figured I’d rewrite it to be SkillSys-compatible and better.

ezgif-5-2d1328198e

You can make the weapon triangle bonuses higher on a lower difficulty to help newer players learn the mechanic, remove the weapon triangle on the hardest difficulty a la Radiant Dawn, or even reverse the triangle on a specific difficulty for a special “Reaver Mode”. Weapon triangle coefficients can be any multiple of 1/12.

Included in the download link are two folders: one for SkillSys users and one for non-Skillsys users. Installation and configuration steps for each:

SkillSys Users:
  • #include Installer.event anywhere in your buildfile.
  • To make these functions run when calculating weapon triangle bonuses, add POIN IgnoreTriangle and POIN WtByDifficulty to the bottom of the WTA calc loop (EngineHacks/Necessary/CalcLoops/WTACalcLoop/WTACalcLoop.event).
  • To change the coefficients per difficulty, alter the bytes within the labels in Installer.event. Make sure the values in each byte are multiplied by 12 in order to support coefficients that are multiples of 1/12. If you have a negative coefficient, make sure you enclose the entire value in parentheses.
  • To designate items as ignoring the weapon triangle entirely, add their weapon ids to IgnoreTriangleList.
Non-SkillSys Users:
  • #include "Installer.event" anywhere in your buildfile, or Insert Installer.event with EA if you’re an FEBuilder user.
  • To change the coefficients per difficulty, alter the bytes within the labels in Installer.event. Make sure the values in each byte are multiplied by 12 in order to support coefficients that are multiples of 1/12. If you have a negative coefficient, make sure you enclose the entire value in parentheses.
  • To designate items as ignoring the weapon triangle entirely, add their weapon ids to IgnoreTriangleList.

If you read the installation/configuration options, you’ll recognize that this hack also comes with an updated version of my Ignore Triangle hack. My previous Ignore Triangle hack was functional, but involved repurposing an item ability bit when it wasn’t necessary. It also required SkillSys to work, which the new version does not.

The old version of Ignore Triangle will still be available on my GitHub, albeit with (DEPRECATED) in the folder name.

Download link: https://github.com/GigaExcalibur/asm/tree/main/WeaponTriangleCoefficients

Thank you for reading, and have a great day!

6 Likes

Oh, and one last update. In addition to Ignore Triangle, Awakening Style Durability and Item Name Expansion are deprecated as well. Awakening Style Durability and Item Name Expansion were my first hacks ever made, and as a result their code is completely unreadable. They still work, but any edits to them are borderline impossible.

I had to rewrite those functions from the ground up when making Forging, so that’s the definitive edition of my item drawing hacks. You can install Forging solely for that purpose, all the other features are completely optional. You can also keep using the old versions, they both still function properly. Every version will stay up on my GitHub, the non-forging ones will just be (DEPRECATED).

2 Likes

Two releases in one day? Unheard of. Anyway, introducing Increase Weapon Level ASMC. Exactly what it says on the tin: it gives you an event command that increases a unit’s weapon exp to the next rank. Technically different from Set Unit Status because it bumps your unit up to the next rank instead of setting it to an absolute value, hopefully that’s enough justification for it to exist.

ezgif-1-f814995d13

Installation is simple: #include Installer.event anywhere in your buildfile, and for FEBuilder users wait until 7743 adds this as a patch.

Structure and parameters in the example event:

ALIGN 4
ASMCTest:
SVAL s1 Klaudia   // s1 = unit to increase rank for
SVAL s2 Light     // s2 = weapon type to increase rank of
SVAL s3 0x0       // s3 = whether to give E rank if unit doesn't have any rank
ASMC IncreaseWLvl|1
NoFade
ENDA

Comes with the macro IncreaseWeaponLevel(unit, type, restriction) for your convenience.

Download link: https://github.com/GigaExcalibur/asm/tree/main/IncreaseWLvlASMC

5 Likes

Evening, everyone. No big release tonight while I’m swamped with finals, so here are two quick inline changes I discovered some time ago:

Movement Cost Table Terrain Display
PUSH
ORG 0x8CA5C
POIN 0x80BB96 // address of the flying move cost table
POP

In vanilla, whether or not a given terrain type displays its hit and avoid bonuses is determined by its movement cost in the Berserker’s movement cost table (located at 0x80B90C). IS decided to tie this to the Berserker’s movement costs because it’s the vanilla class that can cross the most terrain types while still receiving terrain bonuses from them, but hackers could have a few edge cases where that’s not the case.

Namely I’ve seen a few hacks that make some classes (but not Berserkers) able to cross Thickets, so if you wanted to make the terrain window display Thickets’ Def/Avo bonuses you’d have to make Berserkers able to stand on them too. If that’s not something you want, point to a different movement cost list at the address above. It defaults to writing terrain bonuses for all terrain that fliers can cross, but if you only want this for thickets I recommend writing a new custom movement cost instead of using a vanilla one.

Infinite Status Duration
PUSH
ORG 0x188F8
SHORT 0x46C0 // status duration no longer ticks down
POP

PUSH 0x873F8
SHORT 0x46C0 0x46C0 // status duration no longer displays in statscreen
POP

Do you like Thracia 776? No? Well uh, in that case please avert your eyes. This was a funny idea I had during a status discussion in FEUcord and realized I could make it a reality by just noping out the line of code that ticks status down (and the line that displays status duration in the stat screen). Note that this doesn’t change the flickering status duration in the vanilla MMB, although nobody uses the vanilla MMB so I’m comfortable leaving that as is.

If anyone actually plays a hack that uses this, I’m sorry in advance.

Forging menu is next for whenever I have more free time, hopefully by the end of the year. Have a nice day!

7 Likes

I think there’s something… odd with Infinite Status Duration.

PUSH
ORG 0x188F8
SHORT 0x46C0 // status duration no longer ticks down
POP
PUSH 0x873F8
SHORT 0x46C0 0x46C0 // status duration no longer displays in statscreen
POP

EA complains when I try to install it.

image

Try replacing PUSH 0x873F8 with

PUSH
ORG 0x873F8

Already did. This causes the AI to get stuck on EP whenever an enemy has a status effect.


We should probably wait for whoever wrote the code to chime in, yes?

Someone is correct, that was a typo on my part. And for the AI getting stuck on enemy phase, I feel like that may be an unforeseen side effect of removing the decrementing the status count. I tested it on the player side, but seems I neglected to do so for enemies.

I’ll look for a solution to this, but if it’s not immediately solvable in the disassembler it’s beyond the scope of a simple inline change.

1 Like

I’ve done some investigating and came to two conclusions:

  1. The game never gets stuck on enemy phase. If you had been half a second more patient, you would have seen that the game is just going through AI order for all of the enemies on the map. This happens regardless of whether my hack is installed.
  2. Furthermore, the hack functions perfectly on both phases… on a SkillSys-less ROM. I neglected to consider that SkillSys would hook the function that’s responsible for decrementing torch/pure water/status duration, and as such this hack won’t function with SkillSys installed.

I apologize for my typo and lack of foresight for the hack’s incompatibility. Unfortunately I don’t know what part of SkillSys hooks TickActiveFactionTurn, but if you wish to make status infinite duration with SkillSys installed I recommend looking for code there.

1 Like

https://github.com/FireEmblemUniverse/SkillSystem_FE8/blob/master/EngineHacks/Necessary/CalcLoops/TurnLoop/Installer.event

I introduced the turn loop to hook fewer things a while back. Previously (like on feb’s skillsys) armor march, vigor dance, and debuffs/pure water each had their own hook at the start of turns.

Idk about this issue in particular, but this might help

3 Likes

I believe the Boon skill rewrites the decrement in the status duration to implement its effect, so maybe checking its code helps.

2 Likes

Boon was indeed where the hook was, thank you for pointing me to it! Because of that, I can now outline the steps to make this hack work with SkillSys:

  1. The simplest first step is to comment out or delete these lines in EngineHacks/SkillSystem/Skills/StandaloneSkills/StandalonSkills.event. Technically this will make Boon nonfunctional but come on, what hack these days uses Boon?
ORG $188F6
BYTE 0x00 0x00
BYTE 0x00 0x48 0x87 0x46; POIN (Boon|0x1)

If you do want to keep Boon functional, just comment out or delete sub r0,#1 on line 56 in Boon.s and re-assemble it.

  1. Once that’s done, go into EngineHacks/Necessary/ModularStatScreen/pages/mss_defs.s and comment out or remove blh DrawUiSmallNumber on line 705. After that, re-assemble the MSS page 1 file relevant to your config options.

Thank you again Someone and hope this helps, @Eretein!

3 Likes

Thank you. Keeping Boon functional works and poison lasts forever, but the duration still shows up in the stats menu. I already reassembled everything that has page1 in its name. This is what my mss_defs.s looks like:


I haven’t touched mss before this yet, if that helps.

1 Like

If you’re using the Strength/Magic split, the page 1 files you need to reassemble are inside the strmag subfolder.

That worked. Thanks!

1 Like

Hey there! Been a little while. Introducing Stat Screen Terrain Bonus. Have you ever been annoyed that terrain bonuses don’t show up on the unit’s stat screen? Well this is because terrain bonuses are only applied to the unit’s “battle defense” stat instead of their base defensive stat, which makes it very difficult to check. This hack changes it so terrain bonuses are applied to the base stat, which doesn’t change anything practically but allows the true value to be more directly conveyed to the player.



Finally, everyone will see Thrones’ hidden resistance bonus for how bullshit it truly is (under normal circumstances, the Def/Res bonus wouldn’t show up in the MMB either).

This hack was directly inspired by Catball doing the same thing, but their version is incompatible with SkillSys. In contrast, my version is exclusive to SkillSys, so please seek them out if you’re not using SkillSys and would like this quality of life.

Installation instructions:

  1. #include "Installer.event" anywhere in your buildfile.
  2. Add POIN TerrainDefenseBoost to EngineHacks/Necessary/StatGetters/Defense.event
  3. Add POIN TerrainResistanceBoost to EngineHacks/Necessary/StatGetters/Resistance.event

The stat getter does all the heavy lifting on its own, all we’re really doing is moving the terrain bonus there from the battle stat calculation. As such, the only place this hack can potentially conflict with others is if they hook ComputeBattleUnitDefense. Aside from that, this hack should not conflict with anything.

Download link: https://github.com/GigaExcalibur/asm/tree/main/StatScreenTerrainBonus

As usual, let me know if there are any bugs or things that can be improved! Thank you Catball for letting me steal your idea, and everyone please have a good day!

-Dragz

16 Likes