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); } }
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++; } } } }
private void Start() { character = FindObjectOfType <CharacterController2D>(); data = FindObjectOfType <CharacterData>(); crossFader = FindObjectOfType <CrossFader>(); gameManager = FindObjectOfType <GameManager>(); soulOrb = FindObjectOfType <SoulOrb>(); }
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>(); }
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(); }