public void SpawnBaddie(Mobile m) { if (Elementals == null) { return; } Point3D p = m.Location; for (int i = 0; i < 10; i++) { int x = Utility.RandomMinMax(p.X - 1, p.X + 1); int y = Utility.RandomMinMax(p.Y - 1, p.Y + 1); if (Map.TerMur.CanSpawnMobile(x, y, -20)) { p = new Point3D(x, y, -20); break; } } BaseCreature creature = new HurricaneElemental(); creature.MoveToWorld(p, Map.TerMur); Elementals.Add(creature); creature.Combatant = m; }
private void SpawnRandomElemental() { if (Elementals == null) { return; } Rectangle2D rec = SpawnRecs[Utility.RandomMinMax(0, 3)]; ConvertOffset(ref rec); while (true) { int x = Utility.RandomMinMax(rec.X, rec.X + rec.Width); int y = Utility.RandomMinMax(rec.Y, rec.Y + rec.Height); int z = Map.TerMur.GetAverageZ(x, y); if (Map.TerMur.CanSpawnMobile(x, y, z)) { BaseCreature elemental = new VileWaterElemental(); elemental.MoveToWorld(new Point3D(x, y, z), Map.TerMur); Elementals.Add(elemental); break; } } }
public override void OnCreatureKilled(BaseCreature bc) { if (Elementals != null && Elementals.Contains(bc)) { Elementals.Remove(bc); Timer.DelayCall(TimeSpan.FromSeconds(Utility.RandomMinMax(1, 5)), SpawnRandomElemental); } }
private void ClearSpawn() { if (Elementals != null) { List <BaseCreature> list = new List <BaseCreature>(Elementals.Where(t => t != null && !t.Deleted)); foreach (var elemental in list) { elemental.Delete(); } ColUtility.Free(list); ColUtility.Free(Elementals); Elementals = null; } }
public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write(0); writer.Write(Elementals == null ? 0 : Elementals.Count); if (Elementals != null) { Elementals.ForEach(e => writer.Write(e)); } writer.Write(ShadowguardCanals == null ? 0 : ShadowguardCanals.Count); if (ShadowguardCanals != null) { ShadowguardCanals.ForEach(c => writer.Write(c)); } writer.Write(FlowCheckers == null ? 0 : FlowCheckers.Count); if (FlowCheckers != null) { FlowCheckers.ForEach(f => f.Serialize(writer)); } }
public override void ClearItems() { if (ShadowguardCanals != null) { List <Item> list = new List <Item>(ShadowguardCanals.Where(i => i != null && !i.Deleted)); foreach (var canal in list) { canal.Delete(); } ColUtility.Free(list); ColUtility.Free(ShadowguardCanals); ShadowguardCanals = null; } if (Elementals != null) { List <BaseCreature> list = new List <BaseCreature>(Elementals.Where(t => t != null && !t.Deleted)); foreach (var elemental in list) { elemental.Delete(); } ColUtility.Free(list); ColUtility.Free(Elementals); Elementals = null; } if (FlowCheckers != null) { ColUtility.ForEach(FlowCheckers.Where(f => f != null), f => f.EndEncounter()); } }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type) { if (tool is GargoylesPickaxe && def == this.m_OreAndStone && 0.1 > Utility.RandomDouble()) { HarvestResource res = vein.PrimaryResource; if (res == resource && res.Types.Length >= 3) { try { Map map = from.Map; if (map == null) { return; } //daat99 OWLTR start - gargoyle spawn BaseCreature spawned = null; try { int i_Level = CraftResources.GetIndex(CraftResources.GetFromType(type)) + 1; if (i_Level > 1) { spawned = new Elementals(i_Level); } } catch {} if (spawned == null) { //daat99 OWLTR end - gargoyle spawn spawned = Activator.CreateInstance(res.Types[2], new object[] { 25 }) as BaseCreature; } if (spawned != null) { int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.OnBeforeSpawn(new Point3D(x, y, from.Z), map); spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (Math.Abs(z - from.Z) < 10 && map.CanSpawnMobile(x, y, z)) { spawned.OnBeforeSpawn(new Point3D(x, y, z), map); spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } spawned.OnBeforeSpawn(from.Location, from.Map); spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } } catch { } } } }
public ElementalAffinity(Elementals e, int value) { targetElement = e; this.value = value; }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type) { if (tool is GargoylesAxe && 0.1 < Utility.RandomDouble()) { HarvestResource res = vein.PrimaryResource; Map map = from.Map; if (map == null) { return; } BaseCreature spawned = null; int i_Level = 0; if (OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.DAAT99_LUMBERJACKING)) { i_Level = CraftResources.GetIndex(CraftResources.GetFromType(type)) + 301; } else if (res == resource) { try { i_Level = Array.IndexOf(def.Veins, vein) + 301; } catch { } } // if (i_Level > 300 && OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.HARVEST_GIVE_TOKENS)) // TokenSystem.GiveTokensToPlayer(from as PlayerMobile, (i_Level - 300)*10); if (i_Level > 301) { spawned = new Elementals(i_Level); } else { spawned = null; } try { if (spawned != null) { int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (map.CanSpawnMobile(x, y, z)) { spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } } catch { } } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Player") { playerinside = true; playerElement = other.gameObject.GetComponent <Element>(); ElementHandler playerHandler = other.gameObject.GetComponent <ElementHandler>(); lastCheckedElement = playerElement.myElement; Enter(playerElement); // Beroende på vilket element som kulan har påverkas kulans beteende med markens element switch (playerElement.myElement) { case Elementals.EARTH: if (myElement == Elementals.WATER) { // Mark kommer försvinna //Debug.Log("Tiles Dissappears in time Earth-Water"); playerHandler.SlowPlayer(); } if (myElement == Elementals.FIRE) { // Kulan får en hoppboost //Debug.Log("JumpBoost Earth-Fire:"); //playerHandler.JumpBoostPlayer(); playerHandler.SlowPlayer(); } if (myElement == Elementals.WIND) { // Här ska det vara vara en fartbestraffning //Debug.Log("Ändra mark till eld Earth-Wind"); Debug.Log("Sakta ner Earth-Wind"); playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { // Här ska man inte kunna ta sig förbi, står i GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller playerHandler.SpeedBoostPlayer(); } break; case Elementals.FIRE: if (myElement == Elementals.WATER) { // här ska det vara en fartbestraffning Debug.Log("Slwo Down Fire-Water"); playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { // här ska det vara en hoppboost //Debug.Log("HoppBoost Fire-Earth"); //playerHandler.JumpBoostPlayer(); playerHandler.SlowPlayer(); } if (myElement == Elementals.WIND) { // Här ska det vara en mer betydande fartökning Debug.Log("SpeedBoost Fire-Wind"); playerHandler.SlowPlayer(); } if (myElement == Elementals.FIRE) { // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller playerHandler.SpeedBoostPlayer(); } break; case Elementals.WATER: if (myElement == Elementals.FIRE) { // Mark ändras till Jord //Debug.Log("Ändra mark till jord Water-Fire"); playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { // Kulan får en fartbestraffning Debug.Log("Slow down Water-Earth"); playerHandler.SlowPlayer(); } if (myElement == Elementals.WIND) { // Både Fartökning och hoppboost Debug.Log("Speedboost Water-Wind"); //playerHandler.JumpBoostPlayer(); playerHandler.SlowPlayer(); } if (myElement == Elementals.WATER) { // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller playerHandler.SpeedBoostPlayer(); } break; case Elementals.WIND: if (myElement == Elementals.FIRE) { // får en fartbestraffning //Debug.Log("Slow down Wind-Fire"); playerHandler.SlowPlayer(); } if (myElement == Elementals.WATER) { // Kulan får både Fartökning och hoppboost //Debug.Log("Speed up Wind-Water"); //playerHandler.JumpBoostPlayer(); playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { // Marken försvinner playerHandler.SlowPlayer(); } if (myElement == Elementals.WIND) { // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller playerHandler.SpeedBoostPlayer(); } break; case Elementals.REGULAR: break; default: break; } } }
private void Update() { if (playerinside) { if (playerElement.myElement != lastCheckedElement && playerElement.myElement != myElement) { Debug.Log("Han bytte elment"); lastCheckedElement = playerElement.myElement; //ElementHandler playerHandler = playerElement.GetComponent<ElementHandler>(); //Blir kod som körs switch (playerElement.myElement) { case Elementals.EARTH: if (myElement == Elementals.WATER) { // Mark kommer försvinna //Debug.Log("Tiles Dissappears in time"); } if (myElement == Elementals.FIRE) { // Kulan får en hoppboost //Debug.Log("JumpBoost"); //playerHandler.JumpBoostPlayer(); } if (myElement == Elementals.WIND) { // Här ska det vara vara en fartbestraffning //Debug.Log("SlowSpeed"); //playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { (gameObject.GetComponent(typeof(BoxCollider)) as Collider).isTrigger = false; // Här ska man inte kunna ta sig förbi, står i GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller } //else //{ // (gameObject.GetComponent(typeof(BoxCollider)) as Collider).isTrigger = true; //} break; case Elementals.FIRE: if (myElement == Elementals.WATER) { // här ska det vara en fartbestraffning //Debug.Log("Slwo Down"); //playerHandler.SlowPlayer(); } if (myElement == Elementals.EARTH) { // här ska det vara en hoppboost //Debug.Log("HoppBoost"); //playerHandler.JumpBoostPlayer(); } if (myElement == Elementals.WIND) { // Här ska det vara en mer betydande fartökning //Debug.Log("SpeedBoost"); //playerHandler.HyperSpeedBoostPlayer(); } if (myElement == Elementals.FIRE) { (gameObject.GetComponent(typeof(BoxCollider)) as Collider).isTrigger = false; // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller } break; case Elementals.WATER: if (myElement == Elementals.FIRE) { // Mark ändras till Jord //Debug.Log("Ändra mark till jord"); } if (myElement == Elementals.EARTH) { // Kulan får en fartbestraffning //Debug.Log("Slow down"); //playerHandler.SlowPlayer(); } if (myElement == Elementals.WIND) { // Både Fartökning och hoppboost //Debug.Log("HoppBoost"); //playerHandler.SpeedBoostPlayer(); //playerHandler.JumpBoostPlayer(); } if (myElement == Elementals.WATER) { (gameObject.GetComponent(typeof(BoxCollider)) as Collider).isTrigger = false; // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller } break; case Elementals.WIND: if (myElement == Elementals.FIRE) { // får en fartbestraffning //Debug.Log("Slow down"); //playerHandler.SlowPlayer();w } if (myElement == Elementals.WATER) { // Kulan får både Fartökning och hoppboost //Debug.Log("JumpBoost"); //playerHandler.SpeedBoostPlayer(); //playerHandler.JumpBoostPlayer(); } if (myElement == Elementals.EARTH) { // Marken försvinner } if (myElement == Elementals.WIND) { (gameObject.GetComponent(typeof(BoxCollider)) as Collider).isTrigger = true; // Här ska man inte kunna ta sig förbi, står i val GDD // Får tillbaka ditt originaltillstånd // Har inte hunnit med denna heller } break; case Elementals.REGULAR: break; default: break; } } else if (playerElement.myElement == myElement) { Debug.Log("Försökt byta till samma element"); playerElement.GetComponent <ElementalShift>().Shift(lastCheckedElement); } } }
protected override void OnTarget(Mobile from, object target) { if (target is Corpse) { Corpse c = (Corpse)target; if (c.Owner is BaseCreature) { if (c.Carved == false && ((BaseCreature)c.Owner).Hides != 0) { Map map = from.Map; if (map == null) { return; } BaseCreature spawned = null; if (((BaseCreature)c.Owner).HideType == HideType.Regular) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(4)) { case 0: spawned = new Elementals(102); break; case 1: spawned = new Elementals(103); break; case 2: spawned = new Elementals(104); break; case 3: spawned = new Elementals(105); break; } } switch (Utility.Random(4)) { case 0: c.AddItem(new SpinedHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new HornedHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new BarbedHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new PolarHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Spined) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(5)) { case 0: spawned = new Elementals(103); break; case 1: spawned = new Elementals(104); break; case 2: spawned = new Elementals(105); break; case 3: spawned = new Elementals(106); break; case 4: spawned = new Elementals(107); break; } } switch (Utility.Random(5)) { case 0: c.AddItem(new HornedHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new BarbedHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new PolarHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new SyntheticHides(((BaseCreature)c.Owner).Hides)); break; case 4: c.AddItem(new BlazeHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Horned) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(6)) { case 0: spawned = new Elementals(104); break; case 1: spawned = new Elementals(105); break; case 2: spawned = new Elementals(106); break; case 3: spawned = new Elementals(107); break; case 4: spawned = new Elementals(108); break; case 5: spawned = new Elementals(109); break; } } switch (Utility.Random(6)) { case 0: c.AddItem(new BarbedHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new PolarHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new SyntheticHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new BlazeHides(((BaseCreature)c.Owner).Hides)); break; case 4: c.AddItem(new DaemonicHides(((BaseCreature)c.Owner).Hides)); break; case 5: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Barbed) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(7)) { case 0: spawned = new Elementals(105); break; case 1: spawned = new Elementals(106); break; case 2: spawned = new Elementals(107); break; case 3: spawned = new Elementals(108); break; case 4: spawned = new Elementals(109); break; case 5: spawned = new Elementals(110); break; case 6: spawned = new Elementals(111); break; } } switch (Utility.Random(7)) { case 0: c.AddItem(new PolarHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new SyntheticHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new BlazeHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new DaemonicHides(((BaseCreature)c.Owner).Hides)); break; case 4: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; case 5: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 6: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Polar) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(6)) { case 0: spawned = new Elementals(106); break; case 1: spawned = new Elementals(107); break; case 2: spawned = new Elementals(108); break; case 3: spawned = new Elementals(109); break; case 4: spawned = new Elementals(110); break; case 5: spawned = new Elementals(111); break; } } switch (Utility.Random(6)) { case 0: c.AddItem(new SyntheticHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new BlazeHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new DaemonicHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; case 4: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 5: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Synthetic) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(5)) { case 0: spawned = new Elementals(107); break; case 1: spawned = new Elementals(108); break; case 2: spawned = new Elementals(109); break; case 3: spawned = new Elementals(110); break; case 4: spawned = new Elementals(111); break; } } switch (Utility.Random(5)) { case 0: c.AddItem(new BlazeHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new DaemonicHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 4: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.BlazeL) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(4)) { case 0: spawned = new Elementals(108); break; case 1: spawned = new Elementals(109); break; case 2: spawned = new Elementals(110); break; case 3: spawned = new Elementals(111); break; } } switch (Utility.Random(4)) { case 0: c.AddItem(new DaemonicHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 3: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Daemonic) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(3)) { case 0: spawned = new Elementals(109); break; case 1: spawned = new Elementals(110); break; case 2: spawned = new Elementals(111); break; } } switch (Utility.Random(3)) { case 0: c.AddItem(new ShadowHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 2: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType == HideType.Shadow) { if (0.1 > Utility.RandomDouble()) { switch (Utility.Random(2)) { case 0: spawned = new Elementals(110); break; case 1: spawned = new Elementals(111); break; } } switch (Utility.Random(2)) { case 0: c.AddItem(new FrostHides(((BaseCreature)c.Owner).Hides)); break; case 1: c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); break; } } else if (((BaseCreature)c.Owner).HideType >= HideType.Frost) { if (0.1 > Utility.RandomDouble()) { spawned = new Elementals(111); } c.AddItem(new EtherealHides(((BaseCreature)c.Owner).Hides)); } else { from.SendMessage("You can't use gargoyles knife on that."); from.PlaySound(1066); //play giggle sound return; } c.Carved = true; if (m_Knife != null) { if (m_Knife.UsesRemaining > 1) { m_Knife.UsesRemaining--; } else { m_Knife.Delete(); from.SendMessage("You used up your gargoyles knife"); } } if (spawned != null) { from.SendMessage("When you used your gargoyles knife on the corpse a leather elemental came to defend it."); from.PlaySound(1098); //play m_yell int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (map.CanSpawnMobile(x, y, z)) { spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } try { spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } catch { } } else { from.SendMessage("Nothing happened when you used your gargoyles knife on the corpse."); if (from.BodyValue == 401) { from.PlaySound(787); // play f_cry } else if (from.BodyValue == 400) { from.PlaySound(1058); //play m_cry } } } else { from.SendMessage("You see nothing useful to carve from the corpse."); } } } }
public void ChangeElement(Elementals newElement) { myElement = newElement; }