public static AggressorInfo Create( Mobile attacker, Mobile defender, bool criminal )
		{
			AggressorInfo info;

			if ( m_Pool.Count > 0 )
			{
				info = (AggressorInfo)m_Pool.Dequeue();

				info.m_Attacker = attacker;
				info.m_Defender = defender;

				info.m_CanReportMurder = criminal;
				info.m_CriminalAggression = criminal;

				info.m_Queued = false;

				info.Refresh();
			}
			else
			{
				info = new AggressorInfo( attacker, defender, criminal );
			}

			return info;
		}
Exemple #2
0
        private void GiveMagicItems()
        {
            ArrayList toGive = new ArrayList();

            ArrayList list = m_mobile.Aggressors;

            for (int i = 0; i < list.Count; ++i)
            {
                AggressorInfo info = (AggressorInfo)list[i];

                if (info.Attacker.Player && info.Attacker.Alive && (DateTime.Now - info.LastCombatTime) < TimeSpan.FromSeconds(30.0) && !toGive.Contains(info.Attacker))
                {
                    toGive.Add(info.Attacker);
                }
            }

            list = m_mobile.Aggressed;
            for (int i = 0; i < list.Count; ++i)
            {
                AggressorInfo info = (AggressorInfo)list[i];

                if (info.Defender.Player && info.Defender.Alive && (DateTime.Now - info.LastCombatTime) < TimeSpan.FromSeconds(30.0) && !toGive.Contains(info.Defender))
                {
                    toGive.Add(info.Defender);
                }
            }

            if (toGive.Count == 0)
            {
                return;
            }

            // Randomize
            for (int i = 0; i < toGive.Count; ++i)
            {
                int    rand = Utility.Random(toGive.Count);
                object hold = toGive[i];
                toGive[i]    = toGive[rand];
                toGive[rand] = hold;
            }

            for (int i = 0; i < CoreChamp.AmountOfMagicLoot; ++i)
            {
                int    level;
                double random = Utility.RandomDouble();

                if (0.1 >= random)
                {
                    level = CoreChamp.MaxMagicDropLevel;                        // Vanquishing Weapons/Invulnerability Armor
                }
                else if (0.4 >= random)
                {
                    level = (CoreChamp.MinMagicDropLevel + CoreChamp.MaxMagicDropLevel) / 2;                            // Power Weapons/Fortification Armor
                }
                else
                {
                    level = CoreChamp.MinMagicDropLevel;                        // Force Weapons/Hardening Armor
                }
                Mobile m = (Mobile)toGive[i % toGive.Count];

                Item reward;
                if (Utility.RandomBool())
                {
                    reward = CreateWeapon(level);
                }
                else
                {
                    reward = CreateArmor(level);
                }

                if (reward != null)
                {
                    m.SendMessage("You have received a magic item!");
                    m.AddToBackpack(reward);
                }
            }
        }