Пример #1
0
        public static bool Summon(BaseCreature creature, bool controlled, Mobile caster, Point3D p, int sound, TimeSpan duration)
        {
            /*			if ( caster.Followers + creature.ControlSlots > caster.FollowersMax )
                        {
                            caster.SendLocalizedMessage( 1049645 ); // You have too many followers to summon that creature.
                            creature.Delete();
                            return false;
                        }*/

            m_Summoning = true;

            creature.RangeHome = 10;
            creature.Summoned = true;

            if (controlled)
            {
                creature.SetControlMaster(caster);
                creature.SummonMaster = caster;
            }

            Container pack = creature.Backpack;

            if (pack != null)
            {
                for (int i = pack.Items.Count - 1; i >= 0; --i)
                {
                    if (i >= pack.Items.Count)
                        continue;

                    pack.Items[i].Delete();
                }
            }

            new UnsummonTimer(caster, creature, duration).Start();
            creature.m_SummonEnd = DateTime.Now + duration;

            creature.MoveToWorld(p, caster.Map);

            Effects.PlaySound(p, creature.Map, sound);

            m_Summoning = false;

            creature.Freeze(TimeSpan.FromSeconds(2));
            creature.NextCombatTime = DateTime.Now + TimeSpan.FromSeconds(2);

            return true;
        }