/// <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; }
/// <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; }
/// <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; }