internal override void ComputePlayerCombatReplayActors(AbstractPlayer p, ParsedEvtcLog log, CombatReplay replay)
        {
            var             knownEffectsIDs = new HashSet <long>();
            EffectGUIDEvent spread          = log.CombatData.GetEffectGUIDEvent(EffectGUIDs.HarvestTempleSpread);

            if (spread != null)
            {
                var spreadEffects = log.CombatData.GetEffectEvents(spread.ContentID).Where(x => x.Dst == p.AgentItem).ToList();
                knownEffectsIDs.Add(spread.ContentID);
                foreach (EffectEvent spreadEffect in spreadEffects)
                {
                    int duration = 5500;
                    int start    = (int)spreadEffect.Time;
                    int end      = start + duration;
                    AbstractSingleActor dragonVoid = FindActiveDragonVoid(spreadEffect.Time);
                    if (dragonVoid == null)
                    {
                        continue;
                    }
                    int effectEnd = Math.Min((int)dragonVoid.LastAware, end);
                    replay.Decorations.Add(new CircleDecoration(true, end, 240, (start, effectEnd), "rgba(250, 120, 0, 0.2)", new AgentConnector(p)));
                    replay.Decorations.Add(new CircleDecoration(true, 0, 240, (start, effectEnd), "rgba(250, 120, 0, 0.2)", new AgentConnector(p)));
                }
            }
            EffectGUIDEvent redSelected = log.CombatData.GetEffectGUIDEvent(EffectGUIDs.HarvestTempleRedPuddleSelect);

            if (redSelected != null)
            {
                var redSelectedEffects = log.CombatData.GetEffectEvents(redSelected.ContentID).Where(x => x.Dst == p.AgentItem).ToList();
                knownEffectsIDs.Add(redSelected.ContentID);
                foreach (EffectEvent redSelectedEffect in redSelectedEffects)
                {
                    int duration = 6500;
                    int start    = (int)redSelectedEffect.Time;
                    int end      = start + duration;
                    AbstractSingleActor dragonVoid = FindActiveDragonVoid(redSelectedEffect.Time);
                    if (dragonVoid == null)
                    {
                        continue;
                    }
                    int puddleEnd = (int)dragonVoid.LastAware;
                    int effectEnd = Math.Min(puddleEnd, end);
                    replay.Decorations.Add(new CircleDecoration(true, end, 280, (start, effectEnd), "rgba(250, 50, 0, 0.2)", new AgentConnector(p)));
                    replay.Decorations.Add(new CircleDecoration(true, 0, 280, (start, effectEnd), "rgba(250, 50, 0, 0.2)", new AgentConnector(p)));
                    Point3D pos = p.GetCurrentPosition(log, end);
                    if (pos == null)
                    {
                        continue;
                    }
                    replay.Decorations.Add(new CircleDecoration(true, end + 1000, 280, (end, puddleEnd), "rgba(250, 0, 0, 0.3)", new PositionConnector(pos)));
                    replay.Decorations.Add(new CircleDecoration(true, 0, 280, (end, puddleEnd), "rgba(250, 0, 0, 0.3)", new PositionConnector(pos)));
                }
            }

            /*if (p != log.PlayerList[0])
             * {
             *  return;
             * }
             * var test = log.CombatData.GetEffectEvents(p.AgentItem);
             * foreach (EffectEvent effectEvt in test)
             * {
             *  if (effectEvt.IsAroundDst)
             *  {
             *      replay.Decorations.Insert(0, new CircleDecoration(true, 0, 180, ((int)effectEvt.Time, (int)effectEvt.Time + 100), "rgba(0, 180, 255, 1.0)", new AgentConnector(log.FindActor(effectEvt.Dst))));
             *  }
             *  else
             *  {
             *
             *      replay.Decorations.Insert(0, new CircleDecoration(true, 0, 180, ((int)effectEvt.Time, (int)effectEvt.Time + 100), "rgba(0, 180, 255, 1.0)", new PositionConnector(effectEvt.Position)));
             *  }
             * }*/
        }