private void OnChangeFace(IPlayerEntity player, ChangeFaceEventArgs e) { var worldConfiguration = DependencyContainer.Instance.Resolve <WorldConfiguration>(); if (!e.UseCoupon) { if (player.PlayerData.Gold < worldConfiguration.Customization.ChangeFaceCost) { WorldPacketFactory.SendDefinedText(player, DefineText.TID_GAME_LACKMONEY); } else { player.PlayerData.Gold -= (int)worldConfiguration.Customization.ChangeFaceCost; player.VisualAppearance.FaceId = (int)e.FaceId; WorldPacketFactory.SendUpdateAttributes(player, DefineAttributes.GOLD, player.PlayerData.Gold); WorldPacketFactory.SendChangeFace(player, e.FaceId); } } else { var couponItem = player.Inventory.GetItemById(DefineItem.II_SYS_SYS_SCR_FACEOFFFREE); if (couponItem == null) { WorldPacketFactory.SendDefinedText(player, DefineText.TID_GAME_WARNNING_COUPON); return; } player.Inventory.RemoveItems(couponItem.Data.Id); WorldPacketFactory.SendItemUpdate(player, UpdateItemType.UI_NUM, couponItem.UniqueId, couponItem.Quantity); WorldPacketFactory.SendChangeFace(player, e.FaceId); } }
public static void OnChangeFace(WorldClient client, INetPacketStream packet) { var changeFacePacket = new ChangeFacePacket(packet); var changeFaceEventArgs = new ChangeFaceEventArgs(changeFacePacket.ObjectId, changeFacePacket.FaceNumber, changeFacePacket.UseCoupon); client.Player.NotifySystem <CustomizationSystem>(changeFaceEventArgs); }