Jump to content

XLib and XSkills


Xandu

Recommended Posts

15 hours ago, Captain Oats said:

-BUGGED- Cooking Skill Point Add
Xandu, love your mod but I have run into a problem with you mod on a server that I play on. Played on 1.15.3 game and lastest mod version.

I noticed or rather ran into a issue when cooking with your mod. If you apply any points into the cooking skills at all while you have an item cooking in the background then it will cause a a bug where you are no longer able to cook anything more it just shows the fuel burning and no green arrow or temp going up on the food.

Thing's I've tried to fix it:

  • Reloging
  • Changing cooking pots
  • Changing cooking spots (with diffrent pots)
  • Using diffrent fuel

Now two of us on the server we play on are unable to cook anything due to this bug so I believe it's replicatable or at least has happened when we both put points into the cooking skill while cooking something.

NOTE: I went onto a single player world and tried to creative test this theory out but giving myself levels to then spend on a cooking skill didn't seem to work. As in I got the levels and put them into canteen cook but I could not put more than 6 pieces of food in each slot. So maybe there is somthing strange going on with the cooking skill?

Thanks for reading, hope this can be fixed soon.
 

Bug Report Picture XSkills.jpg

Can you send me the server log files from the server where this issue occurred? Tried to reproduce it but couldn't. Even on a server.

Link to comment
Share on other sites

Hi, i uploaded a small patch that hopefully fixed some issues. I don't have so much time as would like to fix bugs and test stuff at the moment. So i am sorry that it could take some time to fix stuff. But at least this version should be compatible with version 1.15.5 and it should load skills properly. This time you should update both mods xlib and xskills.

 

Api:
    -changed some logging to get better informations for debugging

Features:
    -the rancher ability now looks for empty or part filled buckets in your inventory when milking animals(previously just used the current hot bar slot )
    -harvesting metal from locusts now yields base game metal bits
    -added new recipes to create blister steel from metal bits

Fixes:
    -hopefully fixed an issue with some configuration files
    -hopefully fixed an error that can occur with ovens
    -fixed taking a meal out of a crock not unsealing it
    -you can now take meals with quality directly out of the fire pit
    -the experience of a skill can no longer be less than 0

Link to comment
Share on other sites

53 minutes ago, Xandu said:

Hi, i uploaded a small patch that hopefully fixed some issues. I don't have so much time as would like to fix bugs and test stuff at the moment. So i am sorry that it could take some time to fix stuff. But at least this version should be compatible with version 1.15.5 and it should load skills properly. This time you should update both mods xlib and xskills.

Api:
    -changed some logging to get better informations for debugging

Features:
    -the rancher ability now looks for empty or part filled buckets in your inventory when milking animals(previously just used the current hot bar slot )
    -harvesting metal from locusts now yields base game metal bits
    -added new recipes to create blister steel from metal bits

Fixes:
    -hopefully fixed an issue with some configuration files
    -hopefully fixed an error that can occur with ovens
    -fixed taking a meal out of a crock not unsealing it
    -you can now take meals with quality directly out of the fire pit
    -the experience of a skill can no longer be less than 0

Hey Xandu, thanks for your update. It works again. I have one question though. When the mod is temporarily disabled due to issues from an update to the game and then turned back on, the players' extra slots are empty. All items and items that were in the extra slots are gone. Is the information also stored in the config or can an extra config be made for it? Is the information stored in the map? And why are all the items gone? Hope you understand my modest English :D

Thanks a lot

Link to comment
Share on other sites

16 minutes ago, Julius van Vern said:

Hey Xandu, thanks for your update. It works again. I have one question though. When the mod is temporarily disabled due to issues from an update to the game and then turned back on, the players' extra slots are empty. All items and items that were in the extra slots are gone. Is the information also stored in the config or can an extra config be made for it? Is the information stored in the map? And why are all the items gone? Hope you understand my modest English :D

Thanks a lot

Hi. Inventories are handled by the base game. This includes loading and saving. When the base game tries to load an inventory that does not have any class mapping (no code exists to represent the inventory) it just scraps the inventory unfortunately. I already tried to work around this problem but i have not found any good solution for it. I would like it if the base game would just drop all items or would just keep the items in the inventory in the save files. But it doesn't. So as soon as player with items in this inventory joins the game the items are lost. 🙁

Link to comment
Share on other sites

hello I have a problem with the modem. after unpacking in the mods folder in the game no change appears. something like this appears when a file is put in an additional folder. Unable to resolve mod dependencies. chek logo files. helppp

Link to comment
Share on other sites

1 hour ago, adamssj3 said:

hello I have a problem with the modem. after unpacking in the mods folder in the game no change appears. something like this appears when a file is put in an additional folder. Unable to resolve mod dependencies. chek logo files. helppp

Do not unpack the folder. Just put the folder as it is into the mods folder.

Link to comment
Share on other sites

On 8/21/2021 at 12:03 AM, SunGoat said:

expanded foods, breads, just about anything really.

It's probably a compatibility issue with the expanded foods mod. The two mods aren't working great together at the moment.

  • Sad 1
Link to comment
Share on other sites

I have a problem with the skill "well rested". After some time, the game does not show the effect of this skill on the screen. In the modification window, I also do not have any bonus to experience points. Anyone know how to solve this problem?

 

Edit: It is possible that other skills also don't work. << And yet they work.

Edit2: ok, I think the mod reload option helped.

Edited by animatiV
info
  • Confused 1
Link to comment
Share on other sites

On 8/22/2021 at 1:44 AM, l33tmaan said:

Can we, uh, help with that?

Could you update the git repository? I assume it is not up to date? Because i see nothing there that could produce a problem with the Oven. And i need to look at the source code to make it compatible. 

 

19 hours ago, animatiV said:

I have a problem with the skill "well rested". After some time, the game does not show the effect of this skill on the screen. In the modification window, I also do not have any bonus to experience points. Anyone know how to solve this problem?

 

Edit: It is possible that other skills also don't work. << And yet they work.

Edit2: ok, I think the mod reload option helped.

So you don't have this issue anymore?

Link to comment
Share on other sites

2 hours ago, Xandu said:

So you don't have this issue anymore?

For now it's OK.

EDIT: Ohhhhh... again. But now, I noticed that the ability to cook more portions of food doesn't work either.

These two skills must have something in common because they stop working together, I don't know about the others.

EDIT2: I reset the game, and reloaded the mods in the menu. Now it works back.

Sorry for my english.

Edited by animatiV
New info
Link to comment
Share on other sites

8 hours ago, Xandu said:

Could you update the git repository? I assume it is not up to date? Because i see nothing there that could produce a problem with the Oven. And i need to look at the source code to make it compatible. 

I asked Jake to update it, and he's taken care of it. Check it now. I do believe we have the BlockExpandedClayOven class and the ExpandedOven entityclass, which is probably where this issue lies.

  • Thanks 1
Link to comment
Share on other sites

 

On 8/22/2021 at 12:47 AM, Xandu said:

It's probably a compatibility issue with the expanded foods mod. The two mods aren't working great together at the moment.

13 hours ago, l33tmaan said:

I asked Jake to update it, and he's taken care of it. Check it now. I do believe we have the BlockExpandedClayOven class and the ExpandedOven entityclass, which is probably where this issue lies.

aaaaaaand please take a look on random ctd problem when putting crock on ground with default game meal in it with lastest Xskills and Expanded Foods mods working

Spoiler

Version: v1.15.5 (Stable)2021-08-19 15:43:45: Critical error occurred
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: slotId
   at Vintagestory.API.Common.InventoryGeneric.get_Item(Int32 slotId)
   at Vintagestory.GameContent.BlockEntityContainer.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.GameContent.BlockEntityCrock.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.Client.NoObf.ClientWorldMap.SpawnBlockEntity(String classname, BlockPos position, ItemStack byItemStack)
   at Vintagestory.API.Common.Block.OnBlockPlaced(IWorldAccessor world, BlockPos blockPos, ItemStack byItemStack)
   at Vintagestory.Common.BlockAccessorRelaxed.SetBlock(Int32 blockId, BlockPos pos, ItemStack byItemstack)
   at Vintagestory.API.Common.Block.DoPlaceBlock(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ItemStack byItemStack)
   at Vintagestory.GameContent.BlockBehaviorHorizontalOrientable.TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, EnumHandling& handling, String& failureCode)
   at Vintagestory.API.Common.Block.TryPlaceBlock_Patch1(Block this, IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, String& failureCode)
   at Vintagestory.Client.NoObf.ClientMain.OnPlayerTryPlace(BlockSelection blockSelection, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnBlockBuild(BlockSelection blockSelection, Block onBlock, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
   at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
   at _EMxDKvc7iN7J6hlNFQiKeoxg0Mm._ra0MgpFbqkfgNETNlZ5CppyVnhE(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._iIGaTXNE8VYTpgEu9zjpAQyJSxd(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._vCB99EztL7cSfmplK8tyTwrQQxC(Single )
   at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
   at OpenTK.GameWindow.DispatchRenderFrame()
   at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   at _q065sSmA3CNgGuKTGnlAjR4ljPw._WkSl7yfiyr5DwPiSMvTudNAhp6(_t3ILnyYBq5OoYhhBY3JeTWgFmJDA , String[] )
   at _DBu5wiQWRAHGS5G2jiCKymvQ9yE._WkSl7yfiyr5DwPiSMvTudNAhp6(ThreadStart )
-------------------------------
Version: v1.15.5 (Stable)2021-08-19 22:05:27: Critical error occurred
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: slotId
   at Vintagestory.API.Common.InventoryGeneric.get_Item(Int32 slotId)
   at Vintagestory.GameContent.BlockEntityContainer.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.GameContent.BlockEntityCrock.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.Client.NoObf.ClientWorldMap.SpawnBlockEntity(String classname, BlockPos position, ItemStack byItemStack)
   at Vintagestory.API.Common.Block.OnBlockPlaced(IWorldAccessor world, BlockPos blockPos, ItemStack byItemStack)
   at Vintagestory.Common.BlockAccessorRelaxed.SetBlock(Int32 blockId, BlockPos pos, ItemStack byItemstack)
   at Vintagestory.API.Common.Block.DoPlaceBlock(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ItemStack byItemStack)
   at Vintagestory.GameContent.BlockBehaviorHorizontalOrientable.TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, EnumHandling& handling, String& failureCode)
   at Vintagestory.API.Common.Block.TryPlaceBlock_Patch1(Block this, IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, String& failureCode)
   at Vintagestory.Client.NoObf.ClientMain.OnPlayerTryPlace(BlockSelection blockSelection, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnBlockBuild(BlockSelection blockSelection, Block onBlock, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
   at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
   at _EMxDKvc7iN7J6hlNFQiKeoxg0Mm._ra0MgpFbqkfgNETNlZ5CppyVnhE(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._iIGaTXNE8VYTpgEu9zjpAQyJSxd(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._vCB99EztL7cSfmplK8tyTwrQQxC(Single )
   at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
   at OpenTK.GameWindow.DispatchRenderFrame()
   at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   at _q065sSmA3CNgGuKTGnlAjR4ljPw._WkSl7yfiyr5DwPiSMvTudNAhp6(_t3ILnyYBq5OoYhhBY3JeTWgFmJDA , String[] )
   at _DBu5wiQWRAHGS5G2jiCKymvQ9yE._WkSl7yfiyr5DwPiSMvTudNAhp6(ThreadStart )
-------------------------------

Thank You both for great mods 🙂

Link to comment
Share on other sites

I try "expMult: The base multiplier for the all experience you earn." and found it strange behavior.

It's add flat stat to summary experience multiplier instead be more logical and usable global multiplier.

Now it works so: I have "Example skill" which get 100 exp/s and class trait "Example skill gets -50% exp". With expMult=1 i get 50 exp/s, but with expMult=10 i get 950 exp/s (-5%) instead expected 500 exp/s (-50%). 

This behavior makes "expMult" meaningless for it's primary function - corrects skill progression speed without tweaking EVERY skill parameters, because it break all class and skill bonuses and penalties related to skill progression speed.

Link to comment
Share on other sites

4 minutes ago, EreticKB said:

I try "expMult: The base multiplier for the all experience you earn." and found it strange behavior.

It's add flat stat to summary experience multiplier instead be more logical and usable global multiplier.

Now it works so: I have "Example skill" which get 100 exp/s and class trait "Example skill gets -50% exp". With expMult=1 i get 50 exp/s, but with expMult=10 i get 950 exp/s (-5%) instead expected 500 exp/s (-50%). 

This behavior makes "expMult" meaningless for it's primary function - corrects skill progression speed without tweaking EVERY skill parameters, because it break all class and skill bonuses and penalties related to skill progression speed.

Hi, i know. This issue is already addressed in the next patch.

Link to comment
Share on other sites

3 hours ago, Matinez said:

 

aaaaaaand please take a look on random ctd problem when putting crock on ground with default game meal in it with lastest Xskills and Expanded Foods mods working

  Hide contents

Version: v1.15.5 (Stable)2021-08-19 15:43:45: Critical error occurred
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: slotId
   at Vintagestory.API.Common.InventoryGeneric.get_Item(Int32 slotId)
   at Vintagestory.GameContent.BlockEntityContainer.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.GameContent.BlockEntityCrock.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.Client.NoObf.ClientWorldMap.SpawnBlockEntity(String classname, BlockPos position, ItemStack byItemStack)
   at Vintagestory.API.Common.Block.OnBlockPlaced(IWorldAccessor world, BlockPos blockPos, ItemStack byItemStack)
   at Vintagestory.Common.BlockAccessorRelaxed.SetBlock(Int32 blockId, BlockPos pos, ItemStack byItemstack)
   at Vintagestory.API.Common.Block.DoPlaceBlock(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ItemStack byItemStack)
   at Vintagestory.GameContent.BlockBehaviorHorizontalOrientable.TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, EnumHandling& handling, String& failureCode)
   at Vintagestory.API.Common.Block.TryPlaceBlock_Patch1(Block this, IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, String& failureCode)
   at Vintagestory.Client.NoObf.ClientMain.OnPlayerTryPlace(BlockSelection blockSelection, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnBlockBuild(BlockSelection blockSelection, Block onBlock, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
   at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
   at _EMxDKvc7iN7J6hlNFQiKeoxg0Mm._ra0MgpFbqkfgNETNlZ5CppyVnhE(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._iIGaTXNE8VYTpgEu9zjpAQyJSxd(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._vCB99EztL7cSfmplK8tyTwrQQxC(Single )
   at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
   at OpenTK.GameWindow.DispatchRenderFrame()
   at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   at _q065sSmA3CNgGuKTGnlAjR4ljPw._WkSl7yfiyr5DwPiSMvTudNAhp6(_t3ILnyYBq5OoYhhBY3JeTWgFmJDA , String[] )
   at _DBu5wiQWRAHGS5G2jiCKymvQ9yE._WkSl7yfiyr5DwPiSMvTudNAhp6(ThreadStart )
-------------------------------
Version: v1.15.5 (Stable)2021-08-19 22:05:27: Critical error occurred
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: slotId
   at Vintagestory.API.Common.InventoryGeneric.get_Item(Int32 slotId)
   at Vintagestory.GameContent.BlockEntityContainer.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.GameContent.BlockEntityCrock.OnBlockPlaced(ItemStack byItemStack)
   at Vintagestory.Client.NoObf.ClientWorldMap.SpawnBlockEntity(String classname, BlockPos position, ItemStack byItemStack)
   at Vintagestory.API.Common.Block.OnBlockPlaced(IWorldAccessor world, BlockPos blockPos, ItemStack byItemStack)
   at Vintagestory.Common.BlockAccessorRelaxed.SetBlock(Int32 blockId, BlockPos pos, ItemStack byItemstack)
   at Vintagestory.API.Common.Block.DoPlaceBlock(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ItemStack byItemStack)
   at Vintagestory.GameContent.BlockBehaviorHorizontalOrientable.TryPlaceBlock(IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, EnumHandling& handling, String& failureCode)
   at Vintagestory.API.Common.Block.TryPlaceBlock_Patch1(Block this, IWorldAccessor world, IPlayer byPlayer, ItemStack itemstack, BlockSelection blockSel, String& failureCode)
   at Vintagestory.Client.NoObf.ClientMain.OnPlayerTryPlace(BlockSelection blockSelection, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnBlockBuild(BlockSelection blockSelection, Block onBlock, String& failureCode)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.HandleMouseInteractionsBlockSelected(Single dt)
   at Vintagestory.Client.NoObf.SystemMouseInWorldInteractions.OnFinalizeFrame(Single dt)
   at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt)
   at Vintagestory.Client.NoObf.ClientMain.RenderToDefaultFramebuffer(Single dt)
   at _EMxDKvc7iN7J6hlNFQiKeoxg0Mm._ra0MgpFbqkfgNETNlZ5CppyVnhE(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._iIGaTXNE8VYTpgEu9zjpAQyJSxd(Single )
   at _Wwq7msw90Af4XU7mxkxAUKyrS5B._vCB99EztL7cSfmplK8tyTwrQQxC(Single )
   at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(Object sender, FrameEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
   at OpenTK.GameWindow.DispatchRenderFrame()
   at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   at _q065sSmA3CNgGuKTGnlAjR4ljPw._WkSl7yfiyr5DwPiSMvTudNAhp6(_t3ILnyYBq5OoYhhBY3JeTWgFmJDA , String[] )
   at _DBu5wiQWRAHGS5G2jiCKymvQ9yE._WkSl7yfiyr5DwPiSMvTudNAhp6(ThreadStart )
-------------------------------

Thank You both for great mods 🙂

Can you tell me with which meal exactly this crash occurs? I need the number of ingredients especially.

Link to comment
Share on other sites

22 hours ago, Xandu said:

Can you tell me with which meal exactly this crash occurs? I need the number of ingredients especially.

It was 3 meat and 1 vegetable or 3 meat and 1 fruit. I exclude Expanded Foods because it crash without this mod. Now I turn off Inventory Tweaks and no crash so far. Worst part is this crash i soooo random. My wife has that crash too from her computer on my save thru LAN. She thought the problem is putting crock on the ground with shift pressed but next time with shift was no crash and so on... random random,,,, still looking...

sorry for my english

edit: Game without Inventory Tweaks is horrible 🙂 I so much love this mod 🙂

Edited by Matinez
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.