[FE8] Skill System v1.0 - 404 skills done, more on the way

I don’t know if this has been reported before, but Sol and Aether have an error.

When either of those skills activates on a follow up the HP bar doesn’t go up in the battle screen, but the HP is still restored.
Untitled Project

1 Like

I’m pretty sure it has been reported before.

Another one, Corrosion doesn’t work.
I think Corrosion worked fine in the earlier versions of the Skill System.
Untitled Project

1 Like

Is there compatibility with the Link Arena yet?

I noticed that too a few days ago. So it isn’t just me, who have that problem.

was also using a skill% check instead of a skill/2% check like the description suggests so that’s been corrected too

2 Likes

Idea guy time:
Can we have a pre-battle calc loop 2 after the pre-battle calc loop, where everything is calculated, and we have access to calculated damage values, hit, crit, and so on?
Could make skills like half damage or half hit a lot easier to make.

Why not just put those skills at the end of the existing pre-battle loop like existing ones currently are?

Pre battle calc loop works like this:
calculate attacker’s stats -> modify attacker’s stat with skills -> calculate defender’s stats -> modify defender’s stats with skills
So if you want to access your opponent’s stats, say a skill that halves damage, that uses opponent’s attack stat, you have to do it in the last step like this:

mov r4, r0

@ make sure this runs on defender
ldr r0,=0x203a4ec @attacker
cmp r4,r0
beq End

ldr r4,=0x203a4ec @ attacker
ldr r5,=0x203a56c @ defender
mov r6, #0  // rerun flag

SkillStart:
push {r4, r5, r6}

    // skill goes here

SkillEnd:
pop {r4, r5, r6}
cmp r6, #0 // swap r4&r5, rerun
bne End
mov r6, r4
mov r4, r5
mov r5, r6
mov r6, #1 // rerun
b SkillStart

Also it’s a pain to get calculated stats like hit rate, since they are not calculated. If a skill says if opponent’s hit rate is less than 50%, reduce it by 10 more, you need to calculate the hit rate yourself. It’s much easier to have that done by skill system itself.

Wanted to chime in with a quick bug report. Didn’t see anything reported about it, but if there is, I apologize for bringing it up again.

Something odd is happening with the Prescience skill. It is supposed to give +15 Hit and Avoid when initiating battle, but I think it’s giving a permanent buff. It’s also doing odd things with avoid.

I took the most recent GitHub skillsystem master and uploaded it through buildfiles. From here, I went through FeBuilder to mess with O’Neill (mostly because I understand it better)

So here’s O’Neill. I changed his autoleveling to “Do Not Grow” for consistency, and I removed the forest below his initial tile. I also moved Ross and changed the Iron Axe to 50 Hit (so that it was easier to see when there is a change, 100 hit doesn’t tell the full story). Ross is also set to “Do Not Grow” for consistency. The game is set to normal.

Here’s the map layout. I took care to make sure there were no skills changing stats (like Charisma on Eirika, for example).

Here’s O’Neill without Prescience.


And here he is with Prescience.

Here’s Ross.


Here’s the battle screen if Ross initiates battle. O’Neill does not have Prescience.

Here’s the battle screen if O’Neill does have Prescience.

So here O’Neill’s hit rate jumps up by 15 in the stat screen but does not show up in the battle screen (or in battle). His avoid has jumped up by 20. This also doesn’t line up with the statscreen change, which changed by 35.

Lastly, I took Prescience off of O’Neill and added it to Ross instead (to show the intended buff when initiating battle).

Here’s Ross with it.


And here’s the battle screen.

So from what I can tell, here’s what I think is happening:

  • The hit buff is being added to the stat screen permanently, but in practice, it is functioning properly.
  • I did some more testing, and it seems like in every case I’ve given prescience to a character, it is adding a consistent 35 to avoid in the stat screen. I think this is for two reasons.
  • When not initiating battle, 20 avoid is still being added to a unit who has prescience which actually does affect battle. As seen above, when O’Neill has prescience and Ross initiates a battle, O’Neill’s avoid is 20 better than without prescience. Notice that when neither unit has prescience above, Ross’s hit rate is is 56. When O’Neill has prescience, Ross’s hit rate is 36.
  • The remaining 15 of the 35 is being made up for when battle is being initiated. When neither character has prescience above, O’Neill’s hit rate is 49. When Ross has prescience and O’Neill doesn’t, O’Neill’s hit rate is 14.

So altogether, prescience is adding a +20 buff to avoid, no matter what.
Prescience is adding +15 Hit and +15 Avoid to the statscreen, but in battle, they aren’t there if the unit is not initiating battle.
The +15 hit and +15 avoid is being properly added when initiating battle.

Also, last note. Nothing is happening with speed in the above pictures. O’Neill comes with Quick Riposte, so for the photos in which he doesn’t have prescience, he has quick riposte. It’s why he is doubling in some photos and being doubled in the photos that he has prescience instead.

1 Like

You’re overcomplicating this a bit, the only thing you need to check is that the unit in r4 is the defender:

push {r4-r7,r14}
mov r4,r0 
mov r5,r1

ldr r0,=#0x203a56c @defender
cmp r0,r4
bne End

//do skill on one of the two battlers here

//now do the same thing again but for the other battler

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

The running twice behavior of the pre-battle calc loop is largely unique to it, most of the rest of the calc loops are only run once and you have to do your thing twice anyhow. Mimic that behavior here after verifying that r4 contains a specific value and you have a function that only runs at the end of the second loop and affects both battlers.

At the stat screen the battle stats are calculated by setting up a battle with the unit as the attacker vs a blank opponent. Prescience just so happened to be the only “when initiating battle” skill that doesn’t have a check to not apply its effects when there’s a blank opponent, meaning it shows its effects at the stat screen. Fixed here:

Your various avoid issues aren’t something I could replicate, Prescience did not give any permanent avoid buff in my testing before or after fixing the display bug

2 Likes

Sme, thanks so much for taking a look at this. I appreciate the fix, and I need to apologize about the issue I reported. I have no idea why I wrote that the Patience skill was adding +20 avoid. I meant to say Prescience. All the issues were with Prescience. I’m so sorry for causing you to spend time looking at a skill that is working properly.

I’m gonna take your update to Prescience and see if I can reproduce the +20 avoid buff still. Will get back soon.

Edit: Here is O’Neill after the update, removed forest tile under him, he’s set not to grow, and he has the steel axe equipped (on normal).


And here he is with Prescience.


Your fix for the statscreen buff worked. Again, I’m really sorry about writing Patience. Don’t know why I did it.

There are two mistakes in Get_Mag_Growth.asm.

.thumb
.org 0x0

.set MagCharTable, Extra_Growth_Boosts+4
.set MagClassTable, MagCharTable+4
.set ClassGrowthOption, MagClassTable+4

@r0=battle struct or char data ptr
ldr		r1,[r0]
ldrb	r1,[r1,#4]	@unit ID growth
ldr 	r2, MagCharTable
lsl 	r1, #1 @index in mag char table
add 	r1, #1 @growth
ldrb 	r1, [r2, r1]
ldr 	r2,ClassGrowthOption
cmp		r2,#0
beq		GetExtraGrowthBoost

@ldr		r2, [r0]	@NG!
ldr		r2, [r0,#4]		@we need class , not unit

ldrb	r2, [r2,#4]
ldr		r3, MagClassTable

@lsl		r2, #1	@NG!
lsl		r2, #2		@sizeof(MagClassTable) is 4, not 2

add		r2, #1
ldrb	r2, [r3, r2]
add		r1, r2

GetExtraGrowthBoost:
mov		r2,#17		@index of str boost
ldr		r3,Extra_Growth_Boosts
bx		r3

.align
Extra_Growth_Boosts:
@

How do i edit the numbers of already existing skills ? i kinda new to febuilder

In the patches you can search up some skill names and you can edit them there. For instance I know all the Blow skills and Stance Skills can be edited. Also you can edit the text freely just like any other piece of text, but that’s just a visual thing it doesn’t actually change the numbers.

Do i open them in notepad ?

Nevermind

One of my favorite hacks is Inheritors of the Crusade, and one of the reasons for that is the really smart design of a ton of the skills. Idk how easy these would be to implement but if I had to guess the ones that would be best to replicate are

Astra (Inheritors)

-Attack up to 5 times based on Attack Speed

(For every two AS you have above the doulbing threshold, you will do an additional attack up to 5 attacks.
basically;

  • If Unit AS - Enemy AS < 4, attack once
  • If Unit AS - Enemy AS = 4 or 5, attack twice
  • If Unit AS - Enemy AS = 6 or 7, attack three times
  • If Unit AS - Enemy AS = 8 or 9, attack four times
  • If Unit AS - Enemy AS < 9, attack five times

Pursuit (Inheritors)

-When initiating combat, attack twice (not in the brave style, but as a follow up attack, while making sure the unit can still themselves get doubled)

Sol (Inheritors)

-When HP <= 50%, Restore HP equal to damage dealt.

Luna (Inheritors Inspired, Not the same tho)

-When HP <= 50%, Deal damage as if foe has halved defense.

Toughness

-When at full health, enemy attack damage is set to 1. (For the whole round of combat)

Specialist

-When you have only 1 equippable weapon in your inventory, increase damage by 5.

The Azel Skill?

-When unit attacks at 1 range (with a tome), accuracy check is removed

Toxin Boost

-When unit is poisoned, give them stat boosts (I know there’s a system to make poison have stat changes, could an ability invert them?)

Miracle (Inheritors)

-Any lethal blow unit takes reduces them to 1 HP unless already at 1 HP

Bloodthirst

-If Unit Current HP > Enemy Current HP at the start of combat, increase damage by 4.

Idk if this would be considered a bounty or something? But really these are great concepts in their own and are also unique enough from what already exists that it might make a neat challenge.

3 Likes

Most of these sound like fairly simple edits to the existing skills. Perhaps Inheritors of the Crusade’s creator wants to share these versions?

If anyone has a specific edit to a skill that they really want for their project, share your progress on the project and we can talk about what you’d need to do to get a custom skill inserted. Most people use febuilder and won’t go anywhere near a custom build of skillsystems, though.

The guy who made these did them in an entirely different system that predates SkillSys, I’m not sure it’d be directly compatible which is the main reason I put this here.

Most of these I was thinking of as being things I’d like to see communally open, but the one I’d really, really love to use is Astra.

1 Like