Ejemplo n.º 1
0
        public void SetAccount(IAccount acc)
        {
            if (Account == acc)
            {
                return;
            }

            ++Version;

            Extra += "{ACCOUNT CHANGED FROM '" + Account + "' TO '" + acc + "'}";

            var profile = AutoDonate.FindProfile(Account);

            if (profile != null)
            {
                profile.Remove(this);
            }

            Account = acc;

            profile = AutoDonate.EnsureProfile(Account);

            if (profile != null)
            {
                profile.Add(this);
            }

            LogToFile();
        }
Ejemplo n.º 2
0
        protected override void Compile()
        {
            _Admin = User.AccessLevel >= AutoDonate.Access;

            if (Profile == null || Profile.Account == null ||
                (!_Admin && User.AccessLevel <= Profile.Account.AccessLevel && !Profile.Account.IsSharedWith(User.Account)))
            {
                Profile = AutoDonate.EnsureProfile(User.Account);
            }

            if (Profile != null)
            {
                _DonationTier   = Profile.Tier;
                _DonationValue  = Profile.TotalValue;
                _DonationCredit = Profile.TotalCredit;
                _DonationCount  = _Admin ? Profile.Transactions.Count : Profile.Visible.Count();

                Title = "Donations: " + Profile.Account;
            }

            base.Compile();
        }
Ejemplo n.º 3
0
        private void Deliver(Mobile m)
        {
            if (m == null || m.Account == null)
            {
                return;
            }

            if (Account != m.Account)
            {
                SetAccount(m.Account);
            }

            var dp = AutoDonate.EnsureProfile(Account);

            if (dp == null)
            {
                return;
            }

            long credit, bonus;
            var  total = GetCredit(dp, true, out credit, out bonus);

            Credit = credit;
            Bonus  = bonus;

            var bag = DonationEvents.InvokeTransPack(this, dp);

            if (bag == null || bag.Deleted)
            {
                dp.Credit += total;
                return;
            }

            Protect(bag);

            while (credit > 0)
            {
                var cur = AutoDonate.CMOptions.CurrencyType.CreateInstance();

                if (cur == null)
                {
                    bag.Delete();
                    break;
                }

                Protect(cur);

                if (cur.Stackable)
                {
                    cur.Amount = (int)Math.Min(credit, 60000);
                }

                credit -= cur.Amount;

                bag.DropItem(cur);
            }

            if (bag.Deleted)
            {
                dp.Credit += total;
                return;
            }

            while (bonus > 0)
            {
                var cur = AutoDonate.CMOptions.CurrencyType.CreateInstance();

                if (cur == null)
                {
                    bag.Delete();
                    break;
                }

                Protect(cur);

                cur.Name = String.Format("{0} [Bonus]", cur.ResolveName(m));

                if (cur.Stackable)
                {
                    cur.Amount = (int)Math.Min(bonus, 60000);
                }

                bonus -= cur.Amount;

                bag.DropItem(cur);
            }

            if (bag.Deleted || bag.GiveTo(m, GiveFlags.PackBankDelete) == GiveFlags.Delete)
            {
                dp.Credit += total;
            }
        }