public override void OnComplete()
        {
            Victoria victoria = ((TheSummoningQuest)System).Victoria;

            if (victoria != null)
            {
                SummoningAltar altar = victoria.Altar;

                if (altar != null)
                {
                    altar.CheckDaemon();
                }
            }

            PlayerMobile from = System.From;

            if (!from.Alive)
            {
                from.SendLocalizedMessage(1050033); // The devourer lies dead, unfortunately so do you.  You cannot claim your reward while dead.  You will need to face him again.
                ((TheSummoningQuest)System).WaitForSummon = true;
            }
            else
            {
                bool hasRights = true;

                if (m_Daemon != null)
                {
                    List <DamageStore> lootingRights = BaseCreature.GetLootingRights(m_Daemon.DamageEntries, m_Daemon.HitsMax);

                    for (int i = 0; i < lootingRights.Count; ++i)
                    {
                        DamageStore ds = lootingRights[i];

                        if (ds.m_HasRight && ds.m_Mobile == from)
                        {
                            hasRights = true;
                            break;
                        }
                    }
                }

                if (!hasRights)
                {
                    from.SendLocalizedMessage(1050034); // The devourer lies dead.  Unfortunately you did not sufficiently prove your worth in combating the devourer.  Victoria shall summon another incarnation of the devourer to the circle of stones.  Try again noble adventurer.
                    ((TheSummoningQuest)System).WaitForSummon = true;
                }
                else
                {
                    from.SendLocalizedMessage(1050035); // The devourer lies dead.  Search his corpse to claim your prize!

                    if (m_Daemon != null)
                    {
                        m_CorpseWithSkull = m_Daemon.Corpse as Corpse;
                    }
                }
            }
        }
Exemple #2
0
        // NOTE: Quest not entirely OSI-accurate: some changes made to prevent numerous OSI bugs

        public override void Slice()
        {
            if (m_WaitForSummon && m_Victoria != null)
            {
                SummoningAltar altar = m_Victoria.Altar;

                if (altar != null && (altar.Daemon == null || !altar.Daemon.Alive))
                {
                    if (From.Map == m_Victoria.Map && From.InRange(m_Victoria, 8))
                    {
                        m_WaitForSummon = false;

                        AddConversation(new VanquishDaemonConversation());
                    }
                }
            }

            base.Slice();
        }