-
Notifications
You must be signed in to change notification settings - Fork 3
Edge cases
Although the absence of HP is generally a pretty good indicator that a particular monster has been slain, it turns out there are a number of enemies (mostly bosses) that would flout the rules and die in more peculiar ways. These enemies require additional logic to be added to the kill counter to account for their peculiarities. This document describes the techniques used by the addon to count these kills as accurately as possible.
The mechanics are well known to most players, so I won't go into detail here. To put it simply, Rag Rappies have the potential to die twice. The first time, they reward experience and the second time they reward an item. Given that the two kill types provide different rewards, the player may potentially be interested in one or both of those kill types, but I suspect that players would rarely want the addon to count two kills per Rag Rappy. As a fairly reasonable compromise, the addon counts at most 1 kill per Rag Rappy, but doesn't discriminate between the first and second kills. That is to say, regardless of whether you received experience, an item, or both, the addon counts it as a single kill. If you receive neither, the addon does not count the kill.
Once the player has lowered their HP below a certain amount, Poison Lilies begin to spin and make strange noises. If the player doesn't bring their HP to zero within a period of time after that, the Poison Lily will commit suicide. If a Poison Lily commits suicide, its HP never reaches zero so the Kill Counter doesn't pick it up as a kill. To work around this, the Kill Counter checks a different memory location to get a value it calls the "monster state". This different monster state values seem to represent each of an enemy's animations and/or behaviors. Although the death state is different for each enemy type, if the value of the death state is known in advance, this location can be used to check whether the monster has truly been slain.
When a Pan Arms appears, data is automatically allocated for the Pan Arms as well as its split form, Hidoom and Migium. When damage is done to a Pan Arms, Hidoom and Migium's HP remains the same until the Pan Arms splits. When damage is done to Hidoom and Migium, the Pan Arms immediately takes that amount of damage. If the Pan Arms is slain, the Kill Counter works as normal and simply increments the Pan Arms counter. However, if Hidoom and Migium are killed, it increments all three counters. The workaround for this is rather simple: don't increment the Pan Arms counter if Hidoom and Migium are at 0 HP.
Individually, Dubchics aren't permanently slain until the player has brought their HP to zero five times. The Kill Counter must check another memory address to determine the number of times that Dubchic has been slain. Alternatively, the player may kill an entire wave of Dubchics by destroying the Dubwitch that spawned along with them. If a Dubwitch is destroyed, the Kill Counter checks the wave identifier of each of the Dubchics to determine if they spawned in the same wave as the Dubwitch and counts the kills accordingly.
These two bosses have exoskeletons that the player must break through before they can actually start doing damage to the boss' main body. Because the game must apply special logic for these boss fights, their HP is stored in an entirely different memory location.
In addition to having two stages, it turns out that each of the monitors and pillars in Vol Opt's first stage are modeled as separate monsters. All these monsters have Vol Opt's monster ID, so Vol Opt's counter would typically increment between 15 and 30 times in a single fight. The Kill Counter checks a special memory address which can be used as an additional identifier to determine which of these monsters represents Vol Opt's stage 2.
These two bosses have multiple stages, each of which counts for multiple kills. Similar to the way we work around the issues with Vol Opt, a special memory address is used to further identify which stage the player has defeated. The counter for Dark Falz is incremented after defeating stage 2 in Normal difficulty or stage 3 in any other difficulty. Olga Flow's counter is incremented after defeating stage 2.
At some point during the fight, the Gol Dragon begins to make copies of himself. Each of these copies counted for additional kills. Much like with Vol Opt and Dark Falz, an additional identifier is used to determine which is the original.
These bosses have a total of eight targets on their bodies, all of which must be destroyed in order to defeat the boss. These eight targets are represented by monsters 1-8 of the list of all monsters in the arena. To defeat the first stage of this boss, you must defeat monsters 5-8. To defeat the second stage, you must defeat 1-4. Each of these targets count as a separate kill so the kill counter checks monsters 1-4 to see if all their HP has reached zero. If so, then the kill counter is incremented once.