示例#1
0
        public override void OnCast()
        {
            if (CheckFizzle())
            {
                ArrayList targets = new ArrayList();
                foreach (Item item in World.Items.Values)
                {
                    if (item is SoulOrb)
                    {
                        SoulOrb myOrb = (SoulOrb)item;
                        if (myOrb.m_Owner == Caster)
                        {
                            targets.Add(item);
                        }
                    }
                }
                for (int i = 0; i < targets.Count; ++i)
                {
                    Item item = ( Item )targets[i];
                    item.Delete();
                }

                Caster.PlaySound(0x243);
                Effects.SendLocationEffect(Caster.Location, Caster.Map, 0x373A, 15, 0x81F, 0);
                Caster.SendMessage("You create a cloning crystal with your genetic pattern.");
                SoulOrb iOrb = new SoulOrb();
                iOrb.m_Owner = Caster;
                iOrb.Name    = "cloning crystal";
                iOrb.ItemID  = 0x705;
                Caster.AddToBackpack(iOrb);
                Server.Items.SoulOrb.OnSummoned(Caster, iOrb);
            }
        }
示例#2
0
文件: Demon.cs 项目: jrabek/disciple
    private void CheckSoulOffering()
    {
        if (gameManager.paused)
        {
            return;
        }

        if (isOffering)
        {
            float timeBetweenExtraction = baseTimeBetweenExtraction * 10 / player.souls;
            timeBetweenExtraction = timeBetweenExtraction > 0.5f ? 0.5f : timeBetweenExtraction;
            if (Time.time - lastExtractionTime > timeBetweenExtraction)
            {
                lastExtractionTime = Time.time;
                if (player.souls > 0)
                {
                    // print("Souls left to offer " + player.souls);
                    SoulOrb newOrb = Instantiate(orbPrefab, player.transform.position, Quaternion.identity, transform);
                    newOrb.StartOffering(this);
                    player.RemoveSoul();
                    outstandingSouls++;
                }
            }
        }
    }
示例#3
0
 private void Start()
 {
     character   = FindObjectOfType <CharacterController2D>();
     data        = FindObjectOfType <CharacterData>();
     crossFader  = FindObjectOfType <CrossFader>();
     gameManager = FindObjectOfType <GameManager>();
     soulOrb     = FindObjectOfType <SoulOrb>();
 }
示例#4
0
 private void Awake()
 {
     camera2d = GetComponent <ProCamera2D>();
     GameObject[] gameObjects = DontdestroyOnLoadAccessor.Instance.GetAllRootsOfDontDestroyOnLoad();
     foreach (GameObject o in gameObjects)
     {
         if (o.CompareTag("Player"))
         {
             player = o.transform;
             break;
         }
     }
     soulOrb = FindObjectOfType <SoulOrb>();
 }
示例#5
0
        public void Target(Mobile m)
        {
            if (!Caster.CanSee(m))
            {
                Caster.SendLocalizedMessage(500237);   // Target can not be seen.
            }
            else if (m == Caster && CheckBSequence(m, true))
            {
                ArrayList targets = new ArrayList();
                foreach (Item item in World.Items.Values)
                {
                    if (item is SoulOrb)
                    {
                        SoulOrb myOrb = (SoulOrb)item;
                        if (myOrb.m_Owner == m)
                        {
                            targets.Add(item);
                        }
                    }
                }
                for (int i = 0; i < targets.Count; ++i)
                {
                    Item item = ( Item )targets[i];
                    item.Delete();
                }

                m.PlaySound(0x214);
                m.FixedEffect(0x376A, 10, 16);
                m.SendMessage("You summon a magical orb to protect your soul.");
                SoulOrb iOrb = new SoulOrb();
                iOrb.m_Owner = m;
                m.AddToBackpack(iOrb);
                Server.Items.SoulOrb.OnSummoned(m, iOrb);
            }
            else if (!Caster.Alive)
            {
                Caster.SendLocalizedMessage(501040);   // The resurrecter must be alive.
            }
            else if (m is PlayerMobile && m.Alive)
            {
                Caster.SendLocalizedMessage(501041);   // Target is not dead.
            }
            else if (!Caster.InRange(m, 2))
            {
                Caster.SendLocalizedMessage(501042);   // Target is not close enough.
            }
            else if (m.Map == null || !m.Map.CanFit(m.Location, 16, false, false))
            {
                Caster.SendLocalizedMessage(501042); // Target can not be resurrected at that location.
                m.SendLocalizedMessage(502391);      // Thou can not be resurrected there!
            }
            else if (m is PlayerMobile && CheckBSequence(m, true))
            {
                SpellHelper.Turn(Caster, m);

                m.PlaySound(0x214);
                m.FixedEffect(0x376A, 10, 16);

                m.CloseGump(typeof(ResurrectGump));
                m.SendGump(new ResurrectGump(m, Caster));
            }
            else if (m is BaseCreature && CheckBSequence(m, true))
            {
                BaseCreature pet    = (BaseCreature)m;
                Mobile       master = pet.GetMaster();
                SpellHelper.Turn(Caster, m);

                m.PlaySound(0x214);
                m.FixedEffect(0x376A, 10, 16);

                master.CloseGump(typeof(PetResurrectGump));
                master.SendGump(new PetResurrectGump(master, pet));
            }
            FinishSequence();
        }