summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-10-07 11:47:21 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-10-07 11:47:21 +0200
commit583be8fd7e7255aec143266c27517a924ed7dec2 (patch)
tree420c39b239d07094309b1206580760ecbff3a98c
parentb5e53d4c04476daad10b6dc7a25d6fe918614425 (diff)
downloadshrinker-583be8fd7e7255aec143266c27517a924ed7dec2.tar.gz
shrinker-583be8fd7e7255aec143266c27517a924ed7dec2.zip
support heals
-rw-r--r--worker.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/worker.js b/worker.js
index 2f5009e..890868c 100644
--- a/worker.js
+++ b/worker.js
@@ -287,6 +287,20 @@ amqp.connect(RABBITMQ_URI).then(async (rabbit) => {
t.target = participants.filter((p) =>
p.actor == t.payload.Killed
&& p.team == t.payload.KilledTeam)[0];
+ // heal actor (since 2.9)
+ if (t.type == "HealTarget"
+ && t.payload.IsHero == 1
+ && t.payload.Source != "Buff_SpawnStage_Recharge") // TODO LOL what?
+ t.target = participants.filter((p) =>
+ p.actor == t.payload.TargetActor
+ && p.team == t.payload.TargetTeam)[0];
+ // heal target (since 2.9)
+ if (t.type == "HealTarget"
+ && t.payload.TargetIsHero == 1
+ && t.payload.Source != "Buff_SpawnStage_Recharge")
+ t.target = participants.filter((p) =>
+ p.actor == t.payload.TargetActor
+ && p.team == t.payload.TargetTeam)[0];
});
const participants_phase = participants.map((p) => { return {
@@ -715,6 +729,71 @@ amqp.connect(RABBITMQ_URI).then(async (rabbit) => {
&& ev.actor == p)
.map((sel) => sel.payload.Hero)[0] // can be null
)),// traits calculated later
+ // since 2.9
+ // theoretical heal from actor to hero
+ heal_heal_hero: telemetry.data.reduce((acc, ev) =>
+ ev.actor == p
+ && ev.type == "HealTarget"
+ && ev.payload.TargetIsHero == 1
+ ? acc + ev.payload.Heal
+ : acc
+ , 0),
+ // actual heal from actor to hero
+ heal_healed_hero: telemetry.data.reduce((acc, ev) =>
+ ev.actor == p
+ && ev.type == "HealTarget"
+ && ev.payload.TargetIsHero == 1
+ ? acc + ev.payload.Healed
+ : acc
+ , 0),
+ // theoretical heal from actor to other
+ heal_heal_other: telemetry.data.reduce((acc, ev) =>
+ ev.actor == p
+ && ev.type == "HealTarget"
+ && ev.payload.TargetIsHero != 1
+ ? acc + ev.payload.Heal
+ : acc
+ , 0),
+ // actual heal from actor to other
+ heal_healed_other: telemetry.data.reduce((acc, ev) =>
+ ev.actor == p
+ && ev.type == "HealTarget"
+ && ev.payload.TargetIsHero != 1
+ ? acc + ev.payload.Healed
+ : acc
+ , 0),
+ // theoretical heal received from hero
+ heal_rcvd_heal_hero: telemetry.data.reduce((acc, ev) =>
+ ev.target == p
+ && ev.type == "HealTarget"
+ && ev.payload.IsHero == 1
+ ? acc + ev.payload.Heal
+ : acc
+ , 0),
+ // actual heal received from hero
+ heal_rcvd_healed_hero: telemetry.data.reduce((acc, ev) =>
+ ev.target == p
+ && ev.type == "HealTarget"
+ && ev.payload.IsHero == 1
+ ? acc + ev.payload.Healed
+ : acc
+ , 0),
+ // theoretical heal received from minion
+ heal_rcvd_heal_other: telemetry.data.reduce((acc, ev) =>
+ ev.target == p
+ && ev.type == "HealTarget"
+ && ev.payload.IsHero != 1 // TODO open an issue, is "-1" not "0"
+ ? acc + ev.payload.Heal
+ : acc
+ , 0),
+ // actual heal received from minion
+ heal_rcvd_healed_other: telemetry.data.reduce((acc, ev) =>
+ ev.target == p
+ && ev.type == "HealTarget"
+ && ev.payload.IsHero != 1
+ ? acc + ev.payload.Healed
+ : acc
+ , 0),
} });
participant_phase_records = participant_phase_records.concat(
participants_phase); // TODO calc stats