public void OnBuffAdded(object source, GameplayBuffEventArgs args)
        {
            if (Pjs.TryGetValue(args.PlayerId, out Pj pj))
            {
                switch (args.BuffType)
                {
                case (int)BuffTypes.SprintBuff:
                    pj.Buffs.Add(args.BuffId, new SprintBuff(pj));
                    break;

                case (int)BuffTypes.TraverseWallsBuff:
                    pj.Buffs.Add(args.BuffId, new TraverseWallsBuff(pj));
                    break;

                case (int)BuffTypes.BananaStunBuff:
                    pj.Buffs.Add(args.BuffId, new BananaStunBuff(pj));
                    break;

                case (int)BuffTypes.InvisibleBuff:
                    pj.Buffs.Add(args.BuffId, new InvisibleBuff(pj));
                    break;

                case (int)BuffTypes.ImmuneBuff:
                    pj.Buffs.Add(args.BuffId, new ImmuneBuff(pj));
                    break;

                case (int)BuffTypes.RelojBuff:
                    pj.Buffs.Add(args.BuffId, new RelojBuff(pj));
                    break;

                default:
                    throw new System.ComponentModel.InvalidEnumArgumentException();
                }
            }
        }
 public void OnBuffRemoved(object source, GameplayBuffEventArgs args)
 {
     if (Pjs.TryGetValue(args.PlayerId, out Pj pj))
     {
         if (pj.Buffs.TryGetValue(args.BuffId, out Buff buff))
         {
             buff.End();
             pj.Buffs.Remove(args.BuffId);
         }
         else
         {
             throw new System.ComponentModel.InvalidEnumArgumentException();
         }
     }
     else
     {
         throw new System.ComponentModel.InvalidEnumArgumentException();
     }
 }