Example #1
0
        /// <summary>
        /// Completes skill usage if it was a regular dye.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="packet"></param>
        /// <param name="skill"></param>
        /// <param name="part"></param>
        private void CompleteRegular(Creature creature, Packet packet, Skill skill, int part)
        {
            var x = packet.GetShort();
            var y = packet.GetShort();

            // Choose random picker
            var       rnd = RandomProvider.Get();
            DyePicker picker;

            switch (rnd.Next(5))
            {
            default:
            case 0: picker = creature.Temp.RegularDyePickers.Picker1; break;

            case 1: picker = creature.Temp.RegularDyePickers.Picker2; break;

            case 2: picker = creature.Temp.RegularDyePickers.Picker3; break;

            case 3: picker = creature.Temp.RegularDyePickers.Picker4; break;

            case 4: picker = creature.Temp.RegularDyePickers.Picker5; break;
            }

            // Apply picker offset
            x = (short)((x + picker.X) % MapSize);
            y = (short)((y + picker.Y) % MapSize);

            // Arguments
            var a1 = creature.Temp.DyeDistortA1;
            var a2 = creature.Temp.DyeDistortA2;
            var a3 = creature.Temp.DyeDistortA3;
            var a4 = creature.Temp.DyeDistortA4;

            // Color item
            var item = creature.Temp.SkillItem1;
            var data = item.Data;

            try
            {
                switch (part)
                {
                default:
                case 0: item.Info.Color1 = GetRegularColor(data.ColorMap1, a1, a2, a3, a4, x, y); break;

                case 1: item.Info.Color2 = GetRegularColor(data.ColorMap2, a1, a2, a3, a4, x, y); break;

                case 2: item.Info.Color3 = GetRegularColor(data.ColorMap3, a1, a2, a3, a4, x, y); break;
                }
                this.DyeSuccess(creature);

                Send.AcquireFixedDyedItemInfo(creature, item.EntityId);
            }
            catch (Exception ex)
            {
                Log.Exception(ex);
                Send.ServerMessage(creature, Localization.Get("Error, please report."));
            }

            Send.SkillCompleteDye(creature, skill.Info.Id, part);
        }
Example #2
0
        /// <summary>
        /// Completes skill usage if it was a fixed dye.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="packet"></param>
        /// <param name="skill"></param>
        /// <param name="part"></param>
        private void CompleteFixed(Creature creature, Packet packet, Skill skill, int part)
        {
            // Older logs seem to have an additional byte (like Use?)
            //var unk = packet.GetByte();

            switch (part)
            {
            default:
            case 0: creature.Temp.SkillItem1.Info.Color1 = creature.Temp.SkillItem2.Info.Color1; break;

            case 1: creature.Temp.SkillItem1.Info.Color2 = creature.Temp.SkillItem2.Info.Color1; break;

            case 2: creature.Temp.SkillItem1.Info.Color3 = creature.Temp.SkillItem2.Info.Color1; break;
            }

            this.DyeSuccess(creature);

            Send.AcquireFixedDyedItemInfo(creature, creature.Temp.SkillItem1.EntityId);
            Send.SkillCompleteDye(creature, skill.Info.Id, part);
        }