From 49a4a2a60a4761eccaa8171e886a202f8022bfcd Mon Sep 17 00:00:00 2001 From: Antosik Date: Tue, 13 Aug 2024 14:51:12 +0300 Subject: [PATCH 1/2] feat: add neutral_token drops data --- processors/parseSchema.mjs | 1 + processors/processExpand.mjs | 3 +++ src/main/java/opendota/Parse.java | 13 ++++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/processors/parseSchema.mjs b/processors/parseSchema.mjs index 756495e2..af1dd67d 100644 --- a/processors/parseSchema.mjs +++ b/processors/parseSchema.mjs @@ -66,5 +66,6 @@ export default { randomed: false, repicked: false, pred_vict: false, + neutral_token: [], })), }; diff --git a/processors/processExpand.mjs b/processors/processExpand.mjs index 4ed0b7ea..4af426a6 100644 --- a/processors/processExpand.mjs +++ b/processors/processExpand.mjs @@ -630,6 +630,9 @@ function processExpand(entries, meta) { cosmetics(e) { expand(e); }, + neutral_token(e) { + expand(e); + }, }; for (let i = 0; i < entries.length; i += 1) { const e = entries[i]; diff --git a/src/main/java/opendota/Parse.java b/src/main/java/opendota/Parse.java index 9297bb2b..82922c29 100644 --- a/src/main/java/opendota/Parse.java +++ b/src/main/java/opendota/Parse.java @@ -275,6 +275,9 @@ public Integer getPlayerSlotFromEntity(Context ctx, Entity e) { if (slot == null) { slot = getEntityProperty(e, "m_iPlayerID", null); } + if (slot == null) { + slot = getEntityProperty(e, "m_iPlayerOwnerID", null); + } if (slot != null) { slot /= 2; } @@ -473,7 +476,9 @@ public void onCombatLogEntry(Context ctx, CombatLogEntry cle) { @OnEntityEntered public void onEntityEntered(Context ctx, Entity e) { - if (e.getDtClass().getDtName().equals("CDOTAWearableItem")) { + String entityName = e.getDtClass().getDtName(); + + if (entityName.equals("CDOTAWearableItem")) { Integer accountId = getEntityProperty(e, "m_iAccountID", null); Integer itemDefinitionIndex = getEntityProperty(e, "m_iItemDefinitionIndex", null); // System.err.format("%s,%s\n", accountId, itemDefinitionIndex); @@ -483,6 +488,12 @@ public void onEntityEntered(Context ctx, Entity e) { Integer playerSlot = steamid_to_playerslot.get(accountId64); cosmeticsMap.put(itemDefinitionIndex, playerSlot); } + } else if (entityName.startsWith("CDOTA_Item_Tier") && entityName.endsWith("Token")) { + Entry entry = new Entry(time); + entry.type = "neutral_token"; + entry.slot = getPlayerSlotFromEntity(ctx, e); + entry.key = entityName.substring("CDOTA_Item_".length()); // Tier1Token + output(entry); } } From cac8c4181c8201f0469a3d57aced5ce84491d334 Mon Sep 17 00:00:00 2001 From: Antosik Date: Sun, 25 Aug 2024 22:34:13 +0300 Subject: [PATCH 2/2] fix: update naming and save only time & key --- processors/parseSchema.mjs | 2 +- processors/populate.mjs | 3 ++- processors/processExpand.mjs | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/processors/parseSchema.mjs b/processors/parseSchema.mjs index af1dd67d..707c1842 100644 --- a/processors/parseSchema.mjs +++ b/processors/parseSchema.mjs @@ -66,6 +66,6 @@ export default { randomed: false, repicked: false, pred_vict: false, - neutral_token: [], + neutral_tokens_log: [], })), }; diff --git a/processors/populate.mjs b/processors/populate.mjs index 19c66c35..8b790b7d 100644 --- a/processors/populate.mjs +++ b/processors/populate.mjs @@ -66,7 +66,8 @@ function populate(e, container, meta) { } else if ( e.type === 'purchase_log' || e.type === 'kills_log' || - e.type === 'runes_log' + e.type === 'runes_log' || + e.type === 'neutral_tokens_log' ) { arrEntry = { time: e.time, diff --git a/processors/processExpand.mjs b/processors/processExpand.mjs index 4af426a6..b555b6ab 100644 --- a/processors/processExpand.mjs +++ b/processors/processExpand.mjs @@ -631,7 +631,10 @@ function processExpand(entries, meta) { expand(e); }, neutral_token(e) { - expand(e); + expand({ + ...e, + type: 'neutral_tokens_log', + }); }, }; for (let i = 0; i < entries.length; i += 1) {