Ejemplo n.º 1
0
        /// <summary>
        /// Removes current chair prop.
        /// </summary>
        /// <param name="creature"></param>
        private void RemoveChair(Creature creature)
        {
            if (creature.Temp.SittingProp == null || creature.Temp.CurrentChairData == null)
            {
                return;
            }

            // Effect
            if (creature.Temp.CurrentChairData.Effect != 0)
            {
                Send.Effect(creature, creature.Temp.CurrentChairData.Effect, false);
            }

            // Update chair
            creature.Temp.SittingProp.Xml.SetAttributeValue("OWNER", 0);
            creature.Temp.SittingProp.Xml.SetAttributeValue("SITCHAR", 0);

            Send.PropUpdate(creature.Temp.SittingProp);

            Send.AssignSittingProp(creature, 0, 0);

            // Remove chair in 1s
            creature.Temp.SittingProp.DisappearTime = DateTime.Now.AddSeconds(1);

            creature.Temp.SittingProp = null;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates sitting prop, fails silently if item or chair
        /// data doesn't exist.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="chairItemEntityId"></param>
        private void SetUpChair(Creature creature, long chairItemEntityId)
        {
            if (chairItemEntityId == 0)
            {
                return;
            }

            // Check item
            var item = creature.Inventory.GetItem(chairItemEntityId);

            if (item == null || item.Data.Type != ItemType.Misc)
            {
                return;
            }

            // Get chair data
            var chairData = AuraData.ChairDb.Find(item.Info.Id);

            if (chairData == null)
            {
                return;
            }

            var pos = creature.GetPosition();

            // Effect
            if (chairData.Effect != 0)
            {
                Send.Effect(creature, chairData.Effect, true);
            }

            // Chair prop
            var sittingProp = new Prop((!creature.IsGiant ? chairData.PropId : chairData.GiantPropId), creature.RegionId, pos.X, pos.Y, MabiMath.ByteToRadian(creature.Direction));

            sittingProp.Info.Color1 = item.Info.Color1;
            sittingProp.Info.Color2 = item.Info.Color2;
            sittingProp.Info.Color3 = item.Info.Color3;
            sittingProp.State       = "stand";
            creature.Region.AddProp(sittingProp);

            // Move char
            Send.AssignSittingProp(creature, sittingProp.EntityId, 1);

            // Update chair
            sittingProp.Xml.SetAttributeValue("OWNER", creature.EntityId);
            sittingProp.Xml.SetAttributeValue("SITCHAR", creature.EntityId);

            Send.PropUpdate(sittingProp);

            creature.Temp.CurrentChairData = chairData;
            creature.Temp.SittingProp      = sittingProp;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Sets owner for a prop and makes the creature sit on it.
        /// </summary>
        /// <param name="creature"></param>
        /// <param name="prop"></param>
        /// <param name="chair">For temporary props from items.</param>
        private void SitOnProp(Creature creature, Prop prop, ChairData chair = null)
        {
            // Move char
            Send.AssignSittingProp(creature, prop.EntityId, 1);

            // Update chair
            prop.Xml.SetAttributeValue("SITCHAR", creature.EntityId);

            Send.PropUpdate(prop);

            creature.Temp.CurrentChairData = chair;
            creature.Temp.SittingProp      = prop;
        }