private void HarmonyBuff_callback(object e)
{
try
{
foreach (int p in this.Spawn)
{
Systems s = Systems.GetPlayer(p);
//double distance = Formule.gamedistance((float)this.x, (float)this.y, s.Character.Position.x, s.Character.Position.y);
double distance = Formule.gamedistance(this, s.Character.Position);
if (distance <= this.Radius && !s.Character.Action.Buff.InfiniteBuffs.ContainsKey(this.Name))
{
byte slot = s.SkillBuffGetFreeSlot();
if (slot == 255) return;
//add properties
foreach (KeyValuePair<string, int> a in Data.SkillBase[this.ID].Properties1)
{
if (s.SkillAdd_Properties(s, a.Key, true, slot)) { return; };
}
s.Character.Action.Buff.SkillID[slot] = this.ID;
s.Character.Action.Buff.OverID[slot] = s.Character.Ids.GetBuffID();
s.Character.Action.Buff.slot = slot;
s.Character.Action.Buff.count++;
s.Send(s.Character.Spawn, Packet.SkillIconPacket(s.Character.Information.UniqueID, this.ID, s.Character.Action.Buff.OverID[s.Character.Action.Buff.slot], false));
s.Character.Action.Buff.InfiniteBuffs.Add(this.Name, s.Character.Action.Buff.slot);
Inside.Add(s.Character.Information.UniqueID);
}
else if (distance >= this.Radius && s.Character.Action.Buff.InfiniteBuffs.ContainsKey(this.Name))
{
if (Inside.Contains(s.Character.Information.UniqueID))
{
s.SkillBuffEnd(s.Character.Action.Buff.InfiniteBuffs[this.Name]);
}
}
}
}
catch (Exception)
{
}
}