Apex Legends: "Melee" action has two different meanings

Issue Description:
“Melee” action (in “kill_feed” event) has two different meanings (it can be either “kill” or “knockdown”). To handle it, we need to process two different events to find out how to count the number of kills and knockdowns for an attacker. For example:

Knockdown with a melee attack:

{"name":"kill_feed","data":"{\r\n  \"attackerName\": \"MrNooblik\",\r\n  \"victimName\": \"Sagor_77rus\",\r\n  \"weaponName\": \"Melee\",\r\n  \"action\": \"Melee\"\r\n}"}
{"name":"knockdown","data":"{\r\n  \"victimName\": \"Sagor_77rus\"\r\n}"}

Kill with a melee attack:

 {"name":"kill_feed","data":"{\r\n  \"attackerName\": \"MrNooblik\",\r\n  \"victimName\": \"Sagor_77rus\",\r\n  \"weaponName\": \"Melee\",\r\n  \"action\": \"Melee\"\r\n}"}
 {"name":"kill","data":"{\r\n  \"victimName\": \"Sagor_77rus\"\r\n}"}

Steps to reproduce:

  1. Hit an alive enemy with a melee attack.
  2. The enemy will be knocked down but “kill_feed” says that it’s just a melee attack.
  3. Hit the knocked down enemy with a melee attack.
  4. The enemy will be killed but “kill_feed” still says that it’s just a melee attack.

To count the exact number of knockdowns and kills, we have two link two different events – it leads to some issues in the app.

Suggestion:
Replace “Melee” with “Melee Knockdown” and “Melee Kill” for “knockdown” and “kill” respectively instead of sending two different events. For example:

Knockdown with a melee attack:

{"name":"kill_feed","data":"{\r\n  \"attackerName\": \"MrNooblik\",\r\n  \"victimName\": \"Sagor_77rus\",\r\n  \"weaponName\": \"Melee\",\r\n  \"action\": \"Melee Knockdown\"\r\n}"}

Kill with a melee attack:

{"name":"kill_feed","data":"{\r\n  \"attackerName\": \"MrNooblik\",\r\n  \"victimName\": \"Sagor_77rus\",\r\n  \"weaponName\": \"Melee\",\r\n  \"action\": \"Melee Kill\"\r\n}"}

Impact for my app: high

Hi, we got the info. I will check it ASAP and let you know.

Thanks.

Hi @surgeon,

I change the ticket category to “feature request.”

We will discuss the matter internally, and then we’ll make a decision.

Usually, it takes a few days. We will update you here.

Thanks.

@surgeon,

In this scenario, we are forward the kill feed precisely as we get it. SO there is no possibility to change it as you suggest, and that can result in different issues.

You mention that “To count the exact number of knockdowns and kills, we have to link two different events – it leads to some issues in the app.”

That seems to be the right solution. What difficulties did you encounter with the implementation?

Well, actually, I just found that we can get the name of the event (kill or knockdown) for a local player only. If someone else performed a melee attack, we are not able to check what is the result of this attack (kill or knockdown).

For example, if attacker and victim names are not the local player, there will be this event only:

{"name":"kill_feed","data":"{\r\n \"attackerName\": \"uteraRUS\",\r\n \"victimName\": \"realderHHH\",\r\n \"weaponName\": \"Melee\",\r\n \"action\": \"Melee\"\r\n}"}

So, we cannot count the number of kills and knockdowns properly for other players. Also, we want to hide players from the list when they die. However, we don’t know whether an enemy died in such case.

Do you have any ideas?

hey surgeon,

We actually provide the data that is shown in the game’s kill-feed, and since the game itself doesn’t provide any info about the melee action as you can see in the attached screenshot, Overwolf can’t provide it either.
image

I’m closing the ticket. But you can mention me and I will re-open it if necessary.
Thanks

so i know this has been a while but if you still have that issue here is how i’m currently handling it. i keep track of the players in an array and give them a state (alive/knocked/dead) then i do something like this:

[...]
let details = JSON.parse(event.data);
var action = (details.action).toLowerCase().replace(" ", "");
var victim = details.victimName;
[...]
if(action === "melee") {
    if(players[victim].state === "alive") {
        action = "knockdown";
        players[victim].state = "knocked";
    } else {
       action = "kill";
       players[victim].state = "dead";
    }
}
[...]

Yeah, I implemented something similar in the end, but thanks. :slight_smile: