Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
                }
            }
        }
Esempio n. 3
0
 public override void OnCreatureKilled(BaseCreature bc)
 {
     if (Elementals != null && Elementals.Contains(bc))
     {
         Elementals.Remove(bc);
         Timer.DelayCall(TimeSpan.FromSeconds(Utility.RandomMinMax(1, 5)), SpawnRandomElemental);
     }
 }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        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());
            }
        }
Esempio n. 7
0
        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
                    {
                    }
                }
            }
        }
Esempio n. 8
0
 public ElementalAffinity(Elementals e, int value)
 {
     targetElement = e;
     this.value    = value;
 }
Esempio n. 9
0
        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
                {
                }
            }
        }
Esempio n. 10
0
    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;
            }
        }
    }
Esempio n. 11
0
    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);
            }
        }
    }
Esempio n. 12
0
            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.");
                        }
                    }
                }
            }
Esempio n. 13
0
 public void ChangeElement(Elementals newElement)
 {
     myElement = newElement;
 }