Designated Tutorial on How to Edit Skills?

It’s time I learned how to edit skills in the Skills System. I have two specific goals. I want to remove the reverse devil effect from Devil’s Luck (so it only gives immunity to backfire, doesn’t impart it on the opponent). The other is that I want to change the illumination Lumina skill to work off of Bow Rank instead of highest tome rank (since I’ve replaced Light Magic with Crossbows). I think these two things should be reasonably simple to do if I can only get in front of some code I can understand and edit. But that’s the issue. I did ask something like this before and got directed to a general tutorial on Nightmare, but I’d like a specific tutorial on how skills are created/edited. I’m sure I can learn ASM, I just don’t really know where to start aside from editing specific hex values.

This post has a description on how new skills are added:

There’s also this topic:

Most skills can be found here. Additional locations exist as well for skills referenced in calcloops. You can search for these locations in Github.

There is also Vesly’s Let’s Make a Skill (ASM) tutorial.

Here are the particular lines pertinent to:
Devil’s Luck giving backfire to opponent (56-72)

Lumina checking for light:

I beleve it’s actually this file instead:

Well things are going to a swimming stat. My firewall is detecting Trojians in Skill System Master, meanwhile trying to unzip 7743’s custom skill builder is getting an error where it can’t find the path for the new files, something that has never happened to me before.

EDIT: Well I seem to have gotten around that issue by using 7Zip instead of the default unzipper. Looking into the tutorials now.

While learning to create an entirely new skill is definitely a goal to strive towards, for my current purposes, could it be as easy as finding those lines in the Dissassembler and removing/changing them?

Alright, I’ve found the Devil File, removed the Beq isDevil line entirely and saved the file. Next I’m meant to run it through assembleArm to make the proper dmp file, but the assembler fails when I drag the proc_devil s file onto it saying it can’t find the proc_devil.elf file? I’m trying to follow the Runa tutorial which seems the most user friendly, but even with all these steps in, I’ve either missed or it isn’t mentioned how to get these skills in the game after you’ve edited them. Is that in the build file tutorial everyone keeps mentioning?

Just to doublecheck: have you installed devkitPro? If so, is it installed in C:\devkitPro? (since that’s where assembleArm expects it to be)

No, I hadn’t installed devkitPro. And after doing so I’ve managed to get some edited skills in the game :raised_hands: However, there are still some issues. I’m importing them via 776’s Custom Skill Build, however it automatically undoes my entire skill assignment. All the units get personal skills I don’t want them to have and the classes all get reassigned their default skills (that these defaults exist at all is kind of annoying for me even just at base as it means I have to do tedious busy work moving or changing them in every new project). How can I import skills in such a way that it doesn’t change everything? I would have expected it would be the “Take over skill assignment” option on Import Skill Build, but I seem to get the same result no matter which of the two options I use.

I would recommend trying exporting the skill allocation from the skill editor, then just reimporting after you do your custom build.

Ah the bulk export and bulk import. Yes, that’s all working perfectly now. There’s still a lot I’ll need to learn about specific ASM terms to modify other skills and eventually make my own, but getting this far and accomplishing the goals I’ve set out for myself are really the biggest steps. Thanks a lot, everyone.

Okay, I need some more help. I’ve successful managed to edit skills and that’s great. Crossbows are useable via a Bow rank with the right skill, Devil Axe doesn’t backfire for certain classes, crossbows don’t get three range from tome range+, short shield protects against all melee attacks like Tower Shield+. In short I’ve been busy learning assembly.

However, I’m having trouble actually adding new skills. 7743’s import pack doesn’t have some of the more modern skills made in the past year or two. So I’m trying to include them. I copy and paste the description into Skill Definition. I put all the necessary folders into the skills folders. Then I change the I’d of an existing skill to 255 and try to implement one of the new skills. And it just doesn’t do anything. I put all the new icons in the icon folder, the skill turns up under its old name, still doesn’t function and it’s description is set to ffff. I try to add an extra line to the end of the skilll-description file and everything just breaks. Which is surprising because I thought icons and descriptions were effectively superficial.

What am overlooking? What additional files need to be edited so one skill can be swapped in and out for another?

Have you run MAKEHACK_FULL.cmd?

I don’t see a MAKEHACK_FULL.cmd. There is MAKE CUSTOM_BUILD which I was running habbitually until I stopped because it didn’t seem to be necessary when I was doing just editing. Running it now an error shows up that says skill_descriptions.event:314:32 Undefined identifier:SD_BoldFighter

Is MAKEHACK_FULL different to MAKE CUSTOM_BUILD, and if so, where is MAKEHACK_FULL?

They’re probably for the same purpose, but MAKEHACK_FULL.cmd is used to apply the changes written in the buildfile to the ROM. It’s this file in the skillsys repo, https://github.com/FireEmblemUniverse/SkillSystem_FE8/blob/aadb8f54ad079544260601185a6fd915bf2e648d/MAKE_HACK_full.cmd

The error you’re getting might be due to not applying textprocess. You might want to run AssembleText.cmd https://github.com/FireEmblemUniverse/SkillSystem_FE8/blob/aadb8f54ad079544260601185a6fd915bf2e648d/Text/AssembleText.cmd
if you have it or an equivalent in your buildfile, before running any MAKE....cmd files.

Yeah, it seems to be the same executable. I copied it into the folder I’m working with and it gave the same error.

I tried to run AssembleText and it just said “The system cannot find the path specified.”

Hey, not sure where the best place to ask about skill editing is, whether there’s a designated thread or discord, but I’m trying to figure something out. I’ve modified the Short Shield skill to negate all close ranged damage. What I did was basically copy to set attackers damage to 0 code from the existing Tower Shield+ skill. And it works! Units with the skill receive 0 damage when attacked at range. The issue is, they also deal zero damage when attacking at range, which is not intended. Essentially the skill makes it so whomever initiates the combat, regardless of which of the two combatants has the skill, deals zero damage. The battle forecast says they’ll do damage but then in combat their damage is just zero. Why is this happening? Here is the code I have.

.thumb
.align

.equ ShortShieldID,SkillTester+4

push {r4-r7,lr}
@goes in the battle loop.
@r0 is the attacker
@r1 is the defender
mov r4, r0
mov r5, r1

@check range
ldr r0,=#0x203A4D4 @battle stats
ldrb r0,[r0,#2] @range
cmp r0,#1
bgt GoBack

@check for skill
ldr r0, SkillTester
mov lr, r0
mov r0, r4
ldr r1, ShortShieldID
.short 0xf800
cmp r0, #0
beq GoBack

@set defender attack to 0
mov r0, r5
add r0,#0x5A
mov r3,#0
strh r3,[r0]

GoBack:
pop {r4-r7}
pop {r0}
bx r0

.ltorg
.align

SkillTester:
@POIN SkillTester
@WORD ShortShieldID

You can trace through your code in a debugger like no$gba. That way you can see what exactly is happening.

I have No$GBA Debugger, but I don’t know nearly enough about Assembly to even begin to understand what it’s telling me when I run the game through it.