Jump to content

Universal Storage II [1.3.1 and 1.4.5 - 1.7.0]


Paul Kingtiger

Recommended Posts

@Daishi, I just went from KSP 1.8.X (skipped 1.9.X due to the Kopernicus limbo situation) to 1.10.X and noted that the PEM Fuel Cell and Hydrogen and Oxygen Wedges recently got bumped up to the same Tech Level as Stock Fuel Cells.   I've read the first post and noted the dilemma between historical accuracy and throwing off KSP's intended tech progression, but I'll put this out as food for thought:

The PEM Fuel Cell (FuelCellSmall) and associated Wedge tankage is probably overkill and not worth the mass unless there's a continuous high draw demand.  I think life support mods are that demand, and there are plenty in the early game, including US2 and USI recycling modules, and various mod hab parts. 

Just as in the real world, Mun (and Minmus) missions run the very real possibility of extended eclipses by Kerbin at some phase angles for transit, or operations in high or very elliptical orbits.  This probably isn't a big deal for a battery powered Stock craft, that only has to run a command pod and maybe some pre-planned number of science data transmissions, but it's potentially (game) life-threatening when running on LS, as batteries will be quickly depleted before the sun comes back.

I would make the case for reverting the PEM Fuel Cell and Hydrogen and Oxygen wedges back to the spaceExploration (or Electrics, at the same tech level), as the PEM doesn't seem to have any advantage at the current level versus the Stock Fuel Cell.   The Hydrogen and Oxygen resources are still unique, and don't allow for easy mission trades, like LFO or LH2O do later on with the Stock Fuel Cell.  In fact, the only thing that seems to return some value is the Electron and Water tanks in SpecializedElectrics, which allows for solar powered craft to refill the Hydrogen and Oxygen tanks for use during eclipses - one additional Tech Level after Stock Fuel Cells, which can, again, simply drain off the engine propellant tanks as needed. 

I've already written myself a simple patch which does this, but I think reversion of just the three parts noted back to their original Tech Level would still satisfy both the intent of Stock tech progression - again they're not worth the cost/mass unless there's a LS demand - and fostering historical accuracy.  Alternatively, how about a .cfg that recognizes when LS mods are installed (should be as easy as my current patch, with some NEEDS statements thrown in for popular LS mods) and reverts the Tech Levels automatically?

I'll just add that US became part of my gotta-have mods list when I saw the fuel cells, as they allowed me to properly re-create Gemini, LOK, and Apollo-style craft, and I've been looking forward to trying out the new additions.  I appreciate the detail that the entire US2 team is putting into this project.

Edited by KSPrynk
Link to comment
Share on other sites

  • 3 weeks later...

@Daishi, a while ago I put some time in and modded one of the USII parts (maybe the kOS one?) to add the capability to act as a science Experiment Storage Unit. Not sure if I'm the only one that uses them on every ship, but I figured others would too. I thought there was some discussion about an upcomming USII part that would have that capability. Is it in already in one? If not, would be great to add somewhere. Doesn't really need extra art. Just some config updates to put it on an existing module for data storage. 

Link to comment
Share on other sites

On 12/23/2020 at 4:55 PM, AmpCat said:

@Daishi, a while ago I put some time in and modded one of the USII parts (maybe the kOS one?) to add the capability to act as a science Experiment Storage Unit. Not sure if I'm the only one that uses them on every ship, but I figured others would too. I thought there was some discussion about an upcomming USII part that would have that capability. Is it in already in one? If not, would be great to add somewhere. Doesn't really need extra art. Just some config updates to put it on an existing module for data storage. 

I also think that, given the size and detail of that part, the kOS wedge could definitely fill the role of an experiment storage unit! I play with Kerbalism though, so I thought about adding hard drive storage instead, but couldn't figure it out.

I also wonder, has anyone tried to make the USI decouplers compatible with Decoupler Shroud? I love their integrated reaction wheels, but it's a shame not to have the custom shrouds active from that mod.

Link to comment
Share on other sites

It's come to my attention that the sabatier part's ModuleResourceConverter has a 'converterName' key in lower camel case, while the convention I've seen in the stock parts is 'ConverterName' in Pascal case. I don't know if KSP is case sensitive in regards to the ConverterName, but module manager is case sensitive. Any MM patches that look for a 'ConverterName' key in the sabatier will throw an error, for example: the generic converter patch for System Heat. Would it be possible to get this key changed?

Link to comment
Share on other sites

  • 3 weeks later...
5 hours ago, Starseeker said:

Hey, out of curiosity, is this mod still being developed? There hasn't been any dev activity for quite a while now, and I'm not sure if it's just everyone taking a break

Well, they were active on this thread only a few months ago. That's basically just yesterday for KSP mods, isn't it? ;) The original KingTinger website has expired, though. "If you know the owner of this domain, please let them know".   Pinging @Paul Kingtiger

5 hours ago, Starseeker said:

or if it's something more foreboding for the future of this mod

At least it doesn't give me any trouble in 1.11. I noticed a NullReferenceException in US2.StockVariants.EditorPartIconListener when opening a command pod part window in the VAB, though, so it might need to have some code adjustments made someday in the future. Possibly related to the new inventory stuff. There is already a bugreport for it.

I'll admit, not having a public git repository (doesn't have to be github but their interface makes things easier than downloading from OneDrive) dampens my ambitions to look at it unless it really breaks bad. I seem to have trouble logging into bitbucket for some reason.

Edited by HansAcker
Link to comment
Share on other sites

I think Paul is taking a break, Dmagic is busy and i just lost my PC hard drive to a bootloader corruption issue. Data is still there but it means i need to rebuild all my unity projects in a fresh install of Windows 10 and reinstall everything. Not really feeling it on top of global & personal stuff.  Was hoping to kickstart things with KSP2 but that's kinda gone quiet too. I'll see if i can push out my last few models that were pretty much done. 

Link to comment
Share on other sites

40 minutes ago, Daishi said:

I think Paul is taking a break, Dmagic is busy and i just lost my PC hard drive to a bootloader corruption issue. Data is still there but it means i need to rebuild all my unity projects in a fresh install of Windows 10 and reinstall everything. Not really feeling it on top of global & personal stuff.  Was hoping to kickstart things with KSP2 but that's kinda gone quiet too. I'll see if i can push out my last few models that were pretty much done. 

Thanks for the update.  I'm sure it will help others understand the situation.  Best of luck with the rebuild.  Always deal with self first.  We can (will) wait patiently.

Link to comment
Share on other sites

On 1/21/2021 at 8:28 PM, Daishi said:

I think Paul is taking a break, Dmagic is busy and i just lost my PC hard drive to a bootloader corruption issue. Data is still there but it means i need to rebuild all my unity projects in a fresh install of Windows 10 and reinstall everything. Not really feeling it on top of global & personal stuff.  Was hoping to kickstart things with KSP2 but that's kinda gone quiet too. I'll see if i can push out my last few models that were pretty much done. 

Ahhh, gotcha! And yikes, that's definitely a setback to put it lightly :(

Good luck, and like Brigadier said, take care of yourself first!

Link to comment
Share on other sites

I've been testing this in KSP 1.11 and have found that it throws out lots of the following Null Reference Exception whenever you open the PAW on any part of a ship that has at least one kerbal assigned to it:

[EXC 04:35:06.513] NullReferenceException: Object reference not set to an instance of an object
	UniversalStorage2.StockVariants.EditorPartIconListener.PartIconSpawn () (at <da28f16225654a6e9aa3c0ba261544dc>:0)
	UniversalStorage2.StockVariants.EditorPartIconListener.Start () (at <da28f16225654a6e9aa3c0ba261544dc>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

This happens if there is any kerbal assigned to any part on the ship, but luckily the workaround is just removing all the assigned kerbals while you work on the ship and then reassigning them before launching. I understand that this mod's devs are taking a break for the moment so this might not get fixed anytime soon, but I'll go ahead an leave my logs here in case they have a chance to look at it.

Logs

One thing to note, it appears that there may be some mod interactions that worsen the problem. In a test install with just US2, there are 20-40 NRE's whenever you open the PAW for a part, but in a heavily modded install like I usually run, it spews out literally tens of thousands without ever stopping. I've saved those logs as well if anyone wants to look at them, but I know mod developers tend to only want to see what their specific mod is doing, so I won't post them unless requested.

EDIT: Whoops, I just noticed the post a few above mentioning this same issue. I'm leaving my post up though as I was able to find a temporary workaround for anyone like me who was getting so many NREs in their main install that the VAB was barely functional. Also the added logs can't hurt imo.

Edited by SpacedInvader
Link to comment
Share on other sites

I'm hoping to get a little help from anyone here who's got experience working with the various US config modules. I'm working on a series of patches to integrate US2 to work with Real Fuels and I've run into somewhat of a minor issue, but its been bothering me for two days nonetheless. While trying to adapt the 1.5m shroud, I've run into an issue where no matter what I try, I can't get the bottom detail to switch between the flat-bottomed structural variant and the toroidal tank variant. This won't work at all for me unless I leave the config in its vanilla state, let alone how I'd like it to work which is have each of the shroud heights cycle through its structural variant and then its tanked variant before stepping up to the next level.

Currently, this is what I've got for this part:

Spoiler

@PART[USCylindricalShroud1500]:NEEDS[RealFuels]:FOR[zzzMyMods]
{
	!MODULE[USFuelSwitch],*{}
	
	MODULE
	{
		name = USFuelSwitch
		SwitchID = 0;2
		resourceNames = Structural|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH|Structural|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH|Structural|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH|Structural|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH|Aerozine50;Kerosene;LqdHydrogen;LqdMethane;LqdOxygen;HTP;Hydrazine;MMH;NTO;UDMH
		resourceAmounts = 0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|500;500;500;500;500;500;500;500;500;500|800;800;800;800;800;800;800;800;800;800
		initialResourceAmounts = 0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|0|300;300;300;300;300;300;300;300;300;300|500;500;500;500;500;500;500;500;500;500|800;800;800;800;800;800;800;800;800;800
		tankCost = 0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|2;2;2;2;2;2;2;2;2;2|4;4;4;4;4;4;4;4;4;4
		tankMass = 0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|0|2;2;2;2;2;2;2;2;2;2|2;2;2;2;2;2;2;2;2;2|4;4;4;4;4;4;4;4;4;4
		hasGUI = False
		availableInEditor = False
		displayCurrentTankCost = True
		ShowInfo = False
	}
	
	@MODULE[USSwitchControl]:HAS[#SwitchID[2]]
	{
		@ButtonName = Tank Contents
		@ModuleDisplayName = Tank Contents
		@CurrentVariantTitle = Tank Contents
		@FuelSwitchModeOne = True				
		@ObjectNames = Aerozine50;Kerosene;Liquid Hydrogen;Liquid Methane;Liquid Oxygen;HTP;Hydrazine;MMH;NTO;UDMH
		@VariantColors = #eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999
	}
	
	@MODULE[USSwitchControl]:HAS[#SwitchID[0]]
	{
		@ObjectNames = Single;Single Toroid;Double;Double Toroid;Triple;Triple Toroid;Quad;Quad Toroid;Bulkhead;Bulkhead Toroid
		!FuelSwitchModeOne = True
		FuelSwitchModeTwo = True
		@VariantColors = #68984d,#999999;#68984d,#999999;#537a3d,#999999;#537a3d,#999999;#3a562a,#999999;#3a562a,#999999;#2e4321,#999999;#2e4321,#999999;#2e4321,#999999;#2e4321,#999999
	}
	
	!MODULE[USMeshSwitch]:HAS[#SwitchID[0]],*{}
	!MODULE[USMeshSwitch]:HAS[#SwitchID[2]],*{}
	
	MODULE
	{
		name = USMeshSwitch
		SwitchID = 0
		MeshTransforms = 1500TorusStructural;1500TorusLF;1500TorusStructural;1500TorusLF;1500TorusStructural;1500TorusLF;1500TorusStructural;1500TorusLF;1500TorusStructural;1500TorusLF
		AffectColliders = True
		DebugMode = True
	}
	
	MODULE
	{
		name = USMeshSwitch
		SwitchID = 0
		MeshTransforms = OneHigh;OneHigh;TwoHigh;TwoHigh;ThreeHigh;ThreeHigh;FourHigh;FourHigh;Bulkhead;Bulkhead
		AffectColliders = True
		DeleteUnused = True
	}
	
	@MODULE[USCargoSwitch]:HAS[#SwitchID[0]]
	{
		@CargoBayCenter = 0,0.2,0;0,0.2,0;0,0.3,0;0,0.3,0;0,0.55,0;0,0.55,0;0,0.75,0;0,0.75,0;0,0.75,0;0,0.75,0
		@CargoBayRadius = 0.55;0.55;0.6;0.6;0.8;0.8;1;1;1;1
	}
	
	@MODULE[USDragSwitch]:HAS[#SwitchID[0]]
	{
		@DragCubes = A0,B0;A0,B0;A1,B1;A1,B1;A2,B2;A2,B2;A3,B3;A3,B3;A4;A4
	}
	
	@MODULE[USAnimateGeneric]
	{
		@AnimationControlState = 3;3;3;3;3;3;3;3;1;1
	}
	
	@MODULE[USNodeSwitch]:HAS[#SwitchID[0]]
	{
		AttachNodes = HeightOne;HeightOne;HeightTwo;HeightTwo;HeightThree;HeightThree;HeightFour;HeightFour;BulkheadGroup;BulkheadGroup
	}
}

 

And with this, I've pretty much got everything else in the config for the part working. The structural and tanked versions do cycle in the way I want, the various fuels are available in the correct quantities based on which model is selected, the colors work just fine, and even the things like nodes and drag cubes appear to work correctly, but literally no matter what I try, the only mesh that will ever show up for the bottom of the part is the tanked variant. As such, I'm really hoping someone who knows a lot more about the inner workings of the USMeshSwitch Module could step up here and give me an idea of where things are going wrong. In the end, its a relatively minor problem because its just a minor visual component of a single part, but I'd still really like to try to work it out.

While we're at it, if anyone has any experience in working with ModuleFuelTanks from RF and USModuleSwitch from US2, I could use some help there as well. The reason I've got such a mess of fuel configs for this patch is because I've not found a way to get ModuleFuelTanks to properly update dynamically with the settings fed to it by USModuleSwitch. I've been able to get the tank type to switch correctly, but its volume refuses to budge from whatever I've set it to initially. I'd originally hoped I could get the tanks to work in a similar fashion to their procedural parts function where as the US2 module feeds the RF module with new volumes as the size increases / decreases, the tank reflects the new size / type, but I've not been able to manage the volume change at all and I've tried a bunch of different approaches in MM.

Here's where I got to before giving up:

Spoiler

@PART[USAerozineWedge]:NEEDS[RealFuels]:FOR[zzzMyMods]
{
	!MODULE[USFuelSwitch]{}
		
	@MODULE[USSwitchControl]:HAS[#SwitchID[0]]
	{
		@FuelSwitchModeOne = False
	}
		
	MODULE
	{
		name = ModuleFuelTanks

		volume = 0
		temp = 0
		@volume = #$temp$

		utilizationTweakable = true
		type = Default
	}

	MODULE
	{
		name = USModuleSwitch
		SwitchID = 0
		TargetModule = ModuleFuelTanks
		TargetFields = temp
		TargetValues = 65;130;195;260
	}


	MODULE
	{
		name = USModuleSwitch
		SwitchID = 1
		TargetModule = ModuleFuelTanks
		TargetFields = type
		TargetValues = Default;Cryogenic;ServiceModule;ElectricPropulsion
	}

	
	MODULE 
	{ 
		name = USSwitchControl
		SwitchID = 1
		ButtonName = Tank Type
		ModuleDisplayName = Tank Type
		CurrentVariantTitle = Tank Type
		ShowPreviousButton = False
		ObjectNames = Default;Cryogenic;ServiceModule;ElectricPropulsion
		FuelSwitchModeTwo = False
		VariantColors = #eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999;#eb7c10,#999999
	}
}

 

If anyone has any ideas on what would need to change to get this to work, that would be amazing as it would be a much better solution than manually editing in every tank content / amount I've got a desire to use for every part.

Thanks

Link to comment
Share on other sites

  • 1 month later...

Wow. This is a really high-quality mod.

The parts are high quality. Top notch. And they play so well with restock+. I use all the parts in my designs

And the KSPedia is gorgeous.

At first I thought it was too big for my modlist (300Mb) just for what it is : a storage parts pack.

But now I definitely can't play without it.

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

I'll admit I'm highly confused by the absence of the 1.875m fairing, but the presence of the 1.5m ones, which were apparently made specifically to support exactly only one third-party mod? 

 

Ah well, the rest is ultra-great, but I swear I remember the 1.875m fairing being teased like, two years ago. That may literally be the *only* part that's "missing" from this pack.

Link to comment
Share on other sites

On 4/20/2021 at 11:07 PM, Frostiken said:

I'll admit I'm highly confused by the absence of the 1.875m fairing, but the presence of the 1.5m ones, which were apparently made specifically to support exactly only one third-party mod? 

 

Ah well, the rest is ultra-great, but I swear I remember the 1.875m fairing being teased like, two years ago. That may literally be the *only* part that's "missing" from this pack.

It's in development, or at least was before several things happened that've stalled development. When (or if :() it resumes, there's a good chance that's one of the first things that'll be released.

Edited by Starseeker
Link to comment
Share on other sites

  • 2 weeks later...

 

On 1/21/2021 at 10:28 PM, Daishi said:

I think Paul is taking a break, Dmagic is busy and i just lost my PC hard drive to a bootloader corruption issue. Data is still there but it means i need to rebuild all my unity projects in a fresh install of Windows 10 and reinstall everything. Not really feeling it on top of global & personal stuff.  Was hoping to kickstart things with KSP2 but that's kinda gone quiet too. I'll see if i can push out my last few models that were pretty much done. 

This used to be one of my top must have mods!  Thanks for all the hard work over the years. Will miss it if it never gets updated but I've also lost a HD with all the Ark mods I did years ago so I know the interest in rebuilding just to get to roughly the same place is low.

Link to comment
Share on other sites

  • 1 month later...
On 1/28/2021 at 4:22 AM, SpacedInvader said:

I've been testing this in KSP 1.11 and have found that it throws out lots of the following Null Reference Exception whenever you open the PAW on any part of a ship that has at least one kerbal assigned to it:


[EXC 04:35:06.513] NullReferenceException: Object reference not set to an instance of an object
	UniversalStorage2.StockVariants.EditorPartIconListener.PartIconSpawn () (at <da28f16225654a6e9aa3c0ba261544dc>:0)
	UniversalStorage2.StockVariants.EditorPartIconListener.Start () (at <da28f16225654a6e9aa3c0ba261544dc>:0)
	UnityEngine.DebugLogHandler:LogException(Exception, Object)
	ModuleManager.UnityLogHandle.InterceptLogHandler:LogException(Exception, Object)
	UnityEngine.Debug:CallOverridenDebugHandler(Exception, Object)

Looking at the PartIconSpawn, I think the probable issue is marked below - icon.partInfo if null would cause such an exception. I'm not sure if any of the developers are around. It's a shame because I'd love to use US2 parts in 1.11.2

        private void PartIconSpawn()
        {
            //USdebugMessages.USStaticLog("Parsing Editor Icon...");

            if (icon == null)
                return;

            if (!icon.isPart)
                return;

            if (icon.partInfo.partPrefab == null)
                return;

            if (icon.partInfo == null) // FIXME: These two lines should be above the previous if/return.
                return;
Link to comment
Share on other sites

  • 3 weeks later...

I know with KSP2 coming soon motivation is probably low to get this fixed, but this was one of the best mods! The attention to detail in the models and ability to support so many other mods really stood out. The 1.25>2.5 wedge module was one of my most used early career parts until I unlocked the MK1-2 command pod, but it was nice to be able to load out a custom trunk for each excursion into the black all throughout the game.

I might consider running an old version of the game just to keep playing with this!

Link to comment
Share on other sites

3 hours ago, thescaryone said:

I know with KSP2 coming soon motivation is probably low to get this fixed, but this was one of the best mods! The attention to detail in the models and ability to support so many other mods really stood out. The 1.25>2.5 wedge module was one of my most used early career parts until I unlocked the MK1-2 command pod, but it was nice to be able to load out a custom trunk for each excursion into the black all throughout the game.

I might consider running an old version of the game just to keep playing with this!

It's not only ksp2. An HD fail of the main writer means lots of work for him just to get back to last working spot

Link to comment
Share on other sites

I like this mod a lot and I'm handy with a compiler, so thus https://github.com/LambdaSix/UniversalStorage2_1.12/releases/tag/1.8.1a which fixes the NRE spam in the console when accessing the PAW, or seems to for me in testing it on my career save. Drop the two new dll's over the original dll's, it's all in the folder structure so you can just drop GameData in directly if you prefer.

I'm not taking this mod up as a maintainer, I'm no linuxgurugamer ty, but here's the recompiled DLL's (compliant with the licensing)  -- recompiled against KSP 1.12.1.

Link to comment
Share on other sites

10 hours ago, NicolaSix said:

I like this mod a lot and I'm handy with a compiler, so thus https://github.com/LambdaSix/UniversalStorage2_1.12/releases/tag/1.8.1a which fixes the NRE spam in the console when accessing the PAW, or seems to for me in testing it on my career save. Drop the two new dll's over the original dll's, it's all in the folder structure so you can just drop GameData in directly if you prefer.

I'm not taking this mod up as a maintainer, I'm no linuxgurugamer ty, but here's the recompiled DLL's (compliant with the licensing)  -- recompiled against KSP 1.12.1.

Thank you so much! There is only so much I can do as an artist, coding is not my strong suit and errors like those were way out of my reach :)

If you're confident, would you mind if this is pushed and included in an official 1.12 release? Full credit to you of course :)


 

Link to comment
Share on other sites

On 7/6/2021 at 5:53 PM, NicolaSix said:

I like this mod a lot and I'm handy with a compiler, so thus https://github.com/LambdaSix/UniversalStorage2_1.12/releases/tag/1.8.1a which fixes the NRE spam in the console when accessing the PAW, or seems to for me in testing it on my career save. Drop the two new dll's over the original dll's, it's all in the folder structure so you can just drop GameData in directly if you prefer.

I'm not taking this mod up as a maintainer, I'm no linuxgurugamer ty, but here's the recompiled DLL's (compliant with the licensing)  -- recompiled against KSP 1.12.1.

Thanks! I love this mod, and check up every so often to see if something new has come along.  I appreciate you taking the time to fix it for others!

Link to comment
Share on other sites

  • 3 weeks later...

Hello, just a minor question- What's the prognosis on making some parts work only for roleplay? Like, the food and waste containers- I see those are only activated by compatible mods, but would anything break if I made them function anyway?

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.
Note: Your post will require moderator approval before it will be visible.

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...