I Do Wizardry. AMA!

what the kawaii loli with vaguely elise-like clothing

my self-insert mug?

do you do spriting wizardry too omg so cool

No, someone else made it for me. For a community project.

(post must be at least 5 characters)

This thread, or was it something else?

Based on that, but something else.

Nah, Colorz doesn’t sprite, he likes … colors, as his name implies though

Mah color sense is gud though

What are your thoughts on how the event assembler handles AI3?
Do you think we should have a consistent “default” AI3 for the pre-built AI settings?

Because right now the AI3 used by “noAI” and “attackInRange” were just carried over from the prehistoric days of hacking when AI3 was still a mystery. It seems kind of arbitrary that the 2 most common enemy types use different recovery and targeting settings for no real reason.

… Wait. Am I not supposed to ask serious questions here? Okay. Forget that.

I doubt he’s got just 1. He’s Crazycolorz5 for a reason.

1 Like

The new definitions, if you don’t define OldAI, define an AI1 and AI2 as per the new standards (where AI is expected to be input [AI1, AI2] AI3 AI4). It’s been this way for a while, if you check the definitions file. I change it almost right after we made those AI discoveries.

Favorite color is #D6C7FC

So it sets AI3 to 0x00 when the user doesn’t define it. Yeah, AI3 0x00 works fine for a default (personally, I prefer recovery setting 0x01 a little more, but whatever)

I noticed there aren’t any AI helpers for targeting. But I guess the problem is that it’s really inconvenient for both recovery and targeting settings to share the same byte. Covering all 160 combinations (5 recovery x 32 targeting) isn’t realistic. However, I think for targeting all we need at minimum is targeting 0x00 and 0x08 (so there would be ten AI3 definitions in total). Those 2 targeting settings alone cover most of FE6 enemies and nearly all of FE7/FE8 enemies.

Funny thing, targeting 0x08 is actually way more common than 0x00 in FE7/FE8. So experienced FE7/FE8 players are more used to 0x08, but the roaming/pursuing enemies in hacks have been using 0x00 (the “attackInRange” enemies had 0x08, but it’s easier to control who those enemies attack). Although, that’s not exactly a bad thing since targeting 0x00 generally appears smarter since it’s more likely to follow the weapon triangle and less likely to impale itself on slayer weapons. But you can argue 0x08 being better in some situations.

Oh dear, I have been rambling about AI like some crazy person.

I could make a macro out of targeting and recovery settings (out of << and | ). Personally, I felt like the issue with defining targeting was knowing all of the different modes and also expecting the user to know it. As well as most of them being undefined by default.

My lucky number is 5.

I half expected to type that into MSpaint color codes and get rick rolled.

1 Like

That’s why I’m suggesting including only a small number of targeting modes in the AI helpers. There are distinct differences between 0x00 and 0x08 that should be fairly easy to explain. It would give users some meaningful options without having to know all the details of the targeting process. Besides, all this targeting stuff would still be optional. Users that are only concerned with recovery can use one of the current AI3 helpers and have targeting “default” to mode 0x00.

I am not sure if I would call them undefined. I mean, we know how the targeting rules work. The problem is trying to grasp 32 different modes is overwhelming at first. However, I took a closer look at the table and it’s actually a lot less intimidating than I thought.

First, the majority of the modes go completely unused in any GBA game. 20 out of 32 modes are never used. Second, there are some duplicate rows in the table. Third, some rows are duplicates if we only care out the first 8 columns (targeting bonus multipliers) and disregard the remaining class bonus columns which don’t have any effect in FE7/FE8 by default. FE6 has this weird quirk where enemies with slayer weapons are frequently assigned special AI3 to give high priority to classes weak to their slayer weapon (which is largely unnecessary)

Example: 0x00, 0x48, 0x50, 0xC8, 0xD0 all have the same targeting multipliers. 0x48 and 0xC8 are complete duplicates. 0x00, 0x50, 0xD0 only differ in the class columns. 0x48, 0xC8 and 0xD0 are never used.

In addition, the (0x40, 0xC0) group and (0x60, 0xB0, 0xB8, 0xE0) group are extremely similar to the targeting multipliers used by the (0x00, 0x48, 0x50, 0xC8, 0xD0) group. They only differ by the mostly irrelevant class bonus multiplier and turn bonus multiplier.


Well… if it’s possible to condense the information about what targets what better, as general rules, that would help (both others and myself. I can see how the computations work but I don’t see how each one applies to gameplay, for example). And if we want macro names, they need to be short but informative, so that as well.

I don’t really have ice cream nowadays. I guess whatever flavor I can buy coconut-milk ice cream in?

Here’s some information that I think will help explain the differences between some of the targeting modes. Sure, it’s a big simplification, but I think it’s still useful.

Mode  Emphasis              Personal Safety
0x00  Expected Damage       Yes
0x08  Low HP                No
0x18  Exp.Damage + Low HP   Yes
0x88  Expected Damage       No

Factors that have a larger influence in the targeting decision.

Expected Damage: (damage * accuracy)/100
Prefer attacks the have higher average damage. Accuracy plays an important role.

Low HP:
Prefer attacks that will get target to below 20 HP. Lower HP = higher priority.
Enemies are more likely to gang up on the same character.

Personal Safety:
Factors in how much damage the enemy will receive from the defender’s counterattack.
Helps keep enemy alive and healthy, but may dissuade them from picking stronger offensive options.
Note that ALL enemies (even those who don’t care about personal safety) get increased priority against units who cannot counterattack.

It’s important to note there won’t be a targeting mode that is always “best”
Let’s say the player has a myrmidon and a knight within the range of 2 enemy brigands.

With mode 0x00, the brigands are more likely to attack the knight. Weapon triangle advantage gives the brigands a good chance to hit and a decent chance to dodge. However, the knight can tank those hits and has a 0% chance of dying during the enemy phase.

With mode 0x08, the brigands are more likely to attack the myrmidon. While the chance of missing is high, landing an attack will knock the myrmidon into low HP. If both attacks hit, the myrmidon will die. So while risky, there is an actual small chance to get a kill.

Usage in GBA FE:
Modes 0x00 and 0x08 are by far the most common.
FE6 uses 0x00 and 0x08 about equally, but FE7/FE8 heavily prefer 0x08.


Some background info:

Modes 0x00 and 0x08 were obviously included because of their high usage.

Mode 0x18 is actually used only a little bit in FE6, but I think it’s cool enough to include.

Mode 0x88 is unused but similar to mode 0x28. FE6 assigns mode 0x28 to nearly all bow users and aircalibur users. Mode 0x28 has high priority against flying classes which makes it undesirable as a generic option. Mode 0x88 has the same targeting multipliers as mode 0x28 and the same normal class bonuses as 0x00, 0x08, and 0x18. Although if you’re dealing with FE7/FE8 then 0x28 is fine.

So hopefully this can give users some meaningful options without having to burden them with the technical details. It’s kind of frustrating, the implications won’t always be obvious but different targeting strategies can easily change the entire outcome of the enemy phase. It’s not a simple decision, but on the other hand, none of these options will ruin your game and make enemies refuse to attack or whatever. I guess at the very least you can use this simply as a fun way to give personality to your enemies and commanders.

Now there’s the issue of naming conventions. I don’t like long names with subjective descriptors, so I think I would prefer to just call the different targeting modes A, B, C, D (you will need to reference the chart anyways) followed by the HP percentage that triggers recovery mode. So, B30 = AI3 0x09 (0x08 target + 0x01 recovery). But that’s just my own preference, so I won’t be surprised if you disagree.

(based on your last response, it’s probably not the Vanillite evolution family)

1 Like

I mean I was thinking about making a macro like
AI3(GangUp, WithoutHeed)

where AI3 is like
define AI3(targetting, recovery) “(targetting << 3 | recovery)”

Favorite pokemon is Azelf… probably. Other contenders are Jolteon, Lugia, and Breloom.

So this is really good info. but I really can’t think of good names for definitions and stuff.

So i’m thinking it’s probably better to have this someone accessable.

Mind formatting this tl;dr into the FE7 AI thread’s OP?