Jump to content

[Minimum KSP: 1.12.2] Snacks! - Friendly, Simplified Life Support


Angelo Kerman

Recommended Posts

8 hours ago, VolatileBullfrog said:

Just had a Kerbal sink to the ocean floor at the start of a new career, and then discovered none of them could jump at all on Kerbin once I got the first one dry. No inventory to weigh them down, but then I looked a little lower. Um.. 200 snacks is a bit excessive, Jeb.

podwW9m.png?1

The rest of them are gluttons as well.  Reinstalled Snacks 1.16.3 on KSP 1.7.2 and same result.  Removed Snacks and was able to hop around like a little green bunny and float just fine.

Snacks.cfg file shows Snacks_EVA_Resource should be 1.0, but it seems to be pulling from the Snacks_Part_Resource instead, which is set to 200.

It is probably an issue with going on EVA. I will look at the gluttony this weekend.

Link to comment
Share on other sites

2 hours ago, Autumn_Foil said:

Don't know if I missed something somewhere, but how would we activate the Air and Stress addons?

They're not officially released yet, but if you go to the LifeSupportResources folder and rename Air.txt to Air.cfg, and Stress.txt to Stress.cfg, then you can activate them.

Link to comment
Share on other sites

1 hour ago, Angel-125 said:

They're not officially released yet, but if you go to the LifeSupportResources folder and rename Air.txt to Air.cfg, and Stress.txt to Stress.cfg, then you can activate them.

Is it possible to have the Air without the death? I like the added stuff to provide for my kerbals, but I enjoy annoyed/napping kerbals more than dead ones.

Link to comment
Share on other sites

7 minutes ago, Jognt said:

Is it possible to have the Air without the death? I like the added stuff to provide for my kerbals, but I enjoy annoyed/napping kerbals more than dead ones.

Sure, just turn off the death penalty in your game settings.

Link to comment
Share on other sites

It has been a very long time since I played the game.  Since before the first expansion came out.  In that time did they create any life support mechanism in the base game?  Electricity or Oxygen etc?  In rregards to this mod, can I set it up so my Kerbals will die if they go without food or water for 7 days?  Or if they go without Oxygen for some period of time?

 

Thanks, mod looks awesome!

Link to comment
Share on other sites

3 minutes ago, jpinard said:

It has been a very long time since I played the game.  Since before the first expansion came out.  In that time did they create any life support mechanism in the base game?  Electricity or Oxygen etc?  In rregards to this mod, can I set it up so my Kerbals will die if they go without food or water for 7 days?  Or if they go without Oxygen for some period of time?

 

Thanks, mod looks awesome!

No stock life support at this time. For the other resources, just rename Air.txt to Air.cfg in the LifeSupportResources folder. It isn’t officially released yet but it does work. You can use the contents of the Air.cfg file as a basis for Water or ElectricCharge as well... I haven’t updated the wiki yet for documentation, but it is definitely possible to track other life support resources with the Snacks mod.

Link to comment
Share on other sites

Snacks 1.20.0 is now available!

When I started reworking Snacks to add in the penalty system, I tried to follow the same design philosophies that Squad did when making KerbNet: make it a challenge but don't brick your game or save. I've kept that philosophy and stuck to the original concept as a lightweight life support system as I've made improvements over the years. This update is the collmination of weeks of work that keeps the simplistic life support out of the box but opens the doors to so much more. All it needs is a bit of legwork on your part, but there are plenty of examples.

I'm happy to say that Snacks is feature complete!

Custom Life Support Resources: Snacks now has the ability to define custom life support resources besides just Snacks! All it takes is a config file. With this feature you can:
  - Define your own life support resource to consume and/or produce.
  - Optionally track its status in the vessel snapshot window- with support in the multithreaded simulator!
  - Optionally apply one or more outcomes (like penalties) if the consumed resource runs out, or if space for the produced resource is full.

As an example of a tracked resource, check out the LifeSupportResources folder for the FreshAir.txt file. Rename it with the .cfg extension to enable it.
NOTE: You can make FreshAir using the stock ISRU and mini ISRU, and all the stock crew cabins have Air Scrubber converters to turn StaleAir into FreshAir.

New Part: SOCS! Similar to the real-world Solid Fuel Oxygen Generator, the Solid Oxium Candle System burns a solid fuel to produce Fresh Air. Once started it can't be stopped and it might explode... It's available at the Survivability tech tree node, and only available if you enable Air.

Roster Resource: Roster resources can now be defined via the SNACKS_ROSTER_RESOURCE config node. A roster resource is a characteristic of a kerbal as opposed to a resource stored in a part. Better yet, the SnacksConverter can work with roster resources- with background processing!

New penalty: The OnStrikePenalty removes a kerbal's skill set without turning him or her into a tourist. That way, should you uninstall the mod for some reason, you won't brick your mission or game.

Stress: You now have an optional resource to keep track of: Stress! Stress reflects the difficulties of living in confined spaces for extended periods of time. The more space available, reflected in a vessel's crew capacity, the longer a kerbal can live and work without getting stressed out. Events like a lack of food and FreshAir, arguments with other crew members, and low gravity can also cause Stress. And when a kerbal gets stressed out, they'll stop using their skills. You can reduce Stress by letting the kerbal hang out in the Cupola, but you won't gain use of their skills while they're relaxing. To enable Stress, just rename the LifeSupportResources/Stress.txt with the .cfg extension and restart your game. If you already have Kerbal Health then you won't need Stress, but it can serve as an example for how to use roster resources.

And if you have BARIS installed, part failures and staging failures will cause Stress!

Events: Random snacking is now reworked into an event system to add flavor to the game. Kerbals might get the munchies, or eat bad food. Maybe a crew member snores and it causes Stress. With a host of preconditions and outcomes, you can make a number of different and entertaining events. Check out the Snacks.cfg file for examples.

Wiki: updates describe all the preconditions, outcomes and events along with other API objects.

ZnIMnfP.png

Link to comment
Share on other sites

Just a heads-up, Snacks (the resource itself) don't respect Priority settings. Not sure if it's a feature or a bug with ALL_VESSEL flowMode, but something I noticed in a stream just now :)

Maybe use STACK_PRIORITY_SEARCH (respects priority and crossfeed settings) or STAGE_PRIORITY_FLOW (respects priority, but will crossfeed regardless of crossfeed setting) instead?

Link to comment
Share on other sites

4 hours ago, Jognt said:

Just a heads-up, Snacks (the resource itself) don't respect Priority settings. Not sure if it's a feature or a bug with ALL_VESSEL flowMode, but something I noticed in a stream just now :)

Maybe use STACK_PRIORITY_SEARCH (respects priority and crossfeed settings) or STAGE_PRIORITY_FLOW (respects priority, but will crossfeed regardless of crossfeed setting) instead?

Right now that's a known issue of background processing, possibly the SnacksProcessor running in the foreground too.

Link to comment
Share on other sites

Bug report for the SnackResourceSwitcher module: the resources from the first option are still added to the subsequent options, unless the subsequent option has the same resource type. So on the Snack Tins, snacks are still added even if you set them to soil only.

A more complete example:

Spoiler

    MODULE
    {
        name = SnacksResourceSwitcher
        defaultOption = Fuel Tank

        OPTION
        {
            name = Fuel Tank
            RESOURCE
            {
                name = LiquidFuel
                amount = 3240
                maxAmount = 3240
            }
            RESOURCE
            {
                name = Oxidizer
                amount = 3960
                maxAmount = 3960
            }
        }

        OPTION
        {
            name = mega snack
            RESOURCE
            {
                name = Snacks
                amount = 7200
                maxAmount = 7200
            }
        }

        OPTION
        {
            name = Oxidizer Only
            RESOURCE
            {
                name = Oxidizer
                amount = 7200
                maxAmount = 7200
            }
        }
    }

This set of options will produce

FuelTank = LiquidFuel 3240 / Oxidizer 3960 (correct)

mega snack: LiquidFuel 3240 / Oxidizer 3960 / Snacks 7200 (wrong)

Oxidizer Only: LiquidFuel 3240 / Oxidizer 7200 (wrong)

 

Link to comment
Share on other sites

On 7/2/2019 at 12:12 PM, Angel-125 said:

Right now that's a known issue of background processing, possibly the SnacksProcessor running in the foreground too.

Is this what's causing excessive stress on my computer? When I'm playing KSP, everything runs smoothly until I click on the Snacks! icon while piloting a ship, upon which the entire game starts lagging out/stuttering like crazy.

Link to comment
Share on other sites

2 hours ago, Bartybum said:

Is this what's causing excessive stress on my computer? When I'm playing KSP, everything runs smoothly until I click on the Snacks! icon while piloting a ship, upon which the entire game starts lagging out/stuttering like crazy.

Your PC may slow down when you open the Snacks window as it needs to do some calculations for the display.

Link to comment
Share on other sites

13 hours ago, Angel-125 said:

Your PC may slow down when you open the Snacks window as it needs to do some calculations for the display.

The slowness isn't temporary though like you'd expect from a few calculations, it keeps persisting for as long as the game runs. In task manager, CPU usage jumps from ~25% to 95%, and stays there until i reboot the game. Are there any mods Snacks is incompatible with, say Restock or Stockalike Station Parts, etc.? Those are the only two that I can think of that integrate Snacks into their parts.

Link to comment
Share on other sites

11 hours ago, Bartybum said:

The slowness isn't temporary though like you'd expect from a few calculations, it keeps persisting for as long as the game runs. In task manager, CPU usage jumps from ~25% to 95%, and stays there until i reboot the game. Are there any mods Snacks is incompatible with, say Restock or Stockalike Station Parts, etc.? Those are the only two that I can think of that integrate Snacks into their parts.

No incompatibility that I know of. I also made sure to not run Snacks processes constantly, and use techniques that don’t tie up the UI, so not sure why you see a slowdown.

Link to comment
Share on other sites

On 6/29/2019 at 6:01 PM, Angel-125 said:

Custom Life Support Resources: Snacks now has the ability to define custom life support resources besides just Snacks! All it takes is a config file. With this feature you can:

  - Define your own life support resource to consume and/or produce.
  - Optionally track its status in the vessel snapshot window- with support in the multithreaded simulator!
  - Optionally apply one or more outcomes (like penalties) if the consumed resource runs out, or if space for the produced resource is full.

Wait - so you're saying if I want to replace TAC-LS with this, I can use a custom config to add Water? Can I replace "Snacks" with "Food" or "Supplies"? Or is this just to define things other than "Snacks"? Because having this engine be able to do Snacks + Water + Air along with the stress mechanic would be awesome.

Also - any thought to having a replaceable resource? I.e. being able to substitute "snacks" for "food" for "supplies" with specific consumption ratios. (basically a RESOURCE [OR] RESOURCE, or a switch/case type arrangment - does KSP/MM even support that?) Because it'd be awesome to just hook up some containers to my ship and be able to use ones that say "Supplies" as if they contained Snacks.

Link to comment
Share on other sites

14 hours ago, Bartybum said:

The slowness isn't temporary though like you'd expect from a few calculations, it keeps persisting for as long as the game runs. In task manager, CPU usage jumps from ~25% to 95%, and stays there until i reboot the game. Are there any mods Snacks is incompatible with, say Restock or Stockalike Station Parts, etc.? Those are the only two that I can think of that integrate Snacks into their parts.

I run SSPXr (though I dont have any vessels with it currently) and Restock alongside Snacks and I don't see anything like you are describing, though i havent opened the Snacks window in a long time... I should check this.

Edited by DeltaDizzy
Link to comment
Share on other sites

11 minutes ago, panarchist said:

Wait - so you're saying if I want to replace TAC-LS with this, I can use a custom config to add Water? Can I replace "Snacks" with "Food" or "Supplies"? Or is this just to define things other than "Snacks"? Because having this engine be able to do Snacks + Water + Air along with the stress mechanic would be awesome.

Also - any thought to having a replaceable resource? I.e. being able to substitute "snacks" for "food" for "supplies" with specific consumption ratios. (basically a RESOURCE [OR] RESOURCE, or a switch/case type arrangment - does KSP/MM even support that?) Because it'd be awesome to just hook up some containers to my ship and be able to use ones that say "Supplies" as if they contained Snacks.

You can definitely add Water if desired. Just use Air as a template. You can’t replace Snacks though, that is integral to the mod for obvious reasons. At most you could remove the vessel and Eva resource definitions for Snacks to stop the plugin from adding snacks to vessels and crew, then define your own resources to consume and the outcomes to apply when said resources are depleted.

Edited by Angel-125
Link to comment
Share on other sites

Can it really be this simple?

//Juice (basically Water) and Bad Juice (Grey Water).  In stock ISRU, Juice can be made from LiquidFuel to complement Air which is made from Oxidizer.
//This node is used to display a description window describing the new resource being tracked. It's only shown once per game.
SNACKS_RESOURCE_INTRO
{
	name = Juice
}
@SNACKS_RESOURCE_INTRO[Juice]:FOR[SnacksFreshJuice]
{
	title = Juice!
	description = Recent studies have concluded that all the Fresh Air and Snacks being consumed by Kerbals has contributed to an affliction known as Dry Mouth, which is a bad thing.  Recent innovations in the field of fluid dynamics have delivered an exciting new capability called Juice!  Kerbals consume Juice with their Snacks.<br>The inevitable consequence of Juice consumption has been nicknamed Bad Juice.  Thankfully, various ISRU parts can process Bad Juice back into Fresh Juice.
}

RESOURCE_DEFINITION
{
	name = FreshJuice
	displayName = Fresh Juice
	density = 0.00435
	unitCost = .5
	flowMode = ALL_VESSEL
	transfer = PUMP
	isTweakable = true
	volume = 5
}

RESOURCE_DEFINITION
{
	name = BadJuice
	displayName = Bad Juice
	density = 0.00435
	unitCost = .5
	flowMode = ALL_VESSEL
	transfer = PUMP
	isTweakable = true
	volume = 5
}

STORAGE_TEMPLATE
{
	author = Friznit
	name = Juice
	logoPanel = WildBlueIndustries/000WildBlueTools/Decals/Air
	glowPanel = WildBlueIndustries/000WildBlueTools/Decals/AirGlow
	description = Fresh Juice, made from the juice of freshly squeezed things.  Not to be confused with rocket fuel.
	templateTags = stowage

	RESOURCE
	{
		name = FreshJuice
		amount = 1800
		maxAmount = 1800
	}
}
STORAGE_TEMPLATE
{
	author = Friznit
	name = JuiceCombo
	logoPanel = WildBlueIndustries/000WildBlueTools/Decals/AirCombo
	glowPanel = WildBlueIndustries/000WildBlueTools/Decals/AirComboGlow
	description = This kit holds a bit of Fresh Juice and Bad Juice.  Don’t mix.
	templateTags = stowage

	RESOURCE
	{
		name = FreshJuice
		amount = 900
		maxAmount = 900
	}
	RESOURCE
	{
		name = BadJuice
		amount = 0
		maxAmount = 900
	}
}
STORAGE_TEMPLATE
{
	author = Friznit
	name = BadJuice
	logoPanel = WildBlueIndustries/000WildBlueTools/Decals/BadJuice
	glowPanel = WildBlueIndustries/000WildBlueTools/Decals/BadJuiceGlow
	description = Bad Juice, the inevitable biological consequence of Juice consumption.
	templateTags = stowage

	RESOURCE
	{
		name = BadJuice
		amount = 0
		maxAmount = 1800
	}
}

//When a part with crew capacity is loaded in the editor and it lacks this resource, 
//or when a vessel is loaded into the scene and its parts with crew capacity lack this resource, 
//add it to the part. Does not apply to kerbals going on EVA. Use SNACKS_EVA_RESOURCE for that.
SNACKS_PART_RESOURCE
{
	resourceName = FreshJuice
	amount = 16
	maxAmount = 16

	//If true (which is the default), then amount and maxAmount added are multiplied by the part's crew capacity.
	isPerKerbal = true
}

//When a kerbal goes on EVA, take this resource along and remove a corresponding amount from the vessel.
//NOTE: Snacks is a special case since we have game settings that affect snacks per meal and meals per day.
//So for these values, the SNACKS_EVA_RESOURCE config will reflect the game settings. This config node is provided as an example.
SNACKS_EVA_RESOURCE
{
	resourceName = FreshJuice
	amount = 1.0
	maxAmount = 1.0
}

//This is how you define a resource processor that can consume inputs and produce outputs. The inputs and outputs are applied per kerbal.
//The resources can be part of a vessel or a characteristic of a kerbal, such as Courage, Stupidity, and Stress. If a vessel/kerbal runs out of a consumed resource
//then outcomes defined by the OUTCOME node are applied if told to do so. Similarly, if the vessel/kerbal has no more space to store a produced resource
//then outcomes are applied if told to do so.
SNACKS_RESOURCE_PROCESSOR
{
	name = Juice
	secondsPerCycle = 3600

	//You can have preconditions that must be met before resources are consumed or produced. The effective crew count will be reduced
	//for each crew member that fails to meet the preconditions. If none of the crew meet the list of preconditions then process cycle is halted.
//	PRECONDITION
//	{
//		name = CheckBreathableAir
//		mustExist = false //consume FreshJuice if the is below sea level or below the minimum safe atmospheric pressure.
//	}

	CONSUMED_RESOURCE
	{
		//Name of the resource
		resourceName = FreshJuice

		//Amount to consume per kerbal per cycle.
		amount = 0.166667

		//If true, then resource will be displayed in the snapshots window.
		showInSnapshot = true

		//if true then outcomes are applied when vessel/kerbal runs out of the resource.
		failureResultAppliesOutcomes = true
	}

	PRODUCED_RESOURCE
	{
		//Name of the resource
		resourceName = BadJuice

		//Amount to produce per kerbal per cycle.
		amount = 0.166667

		//If true, then resource will be displayed in the snapshots window.
		showInSnapshot = false

		//if true then outcomes are applied when vessel/kerbal runs out of space for the resource.
		failureResultAppliesOutcomes = false
	}

	//Outcomes represent what to do when the vessel/kerbal runs out of a resource and failures apply or the vessel/kerbal runs out of room for the resource and failures apply.
	//When a consumption and/or production process fails, Snacks records the failure. Outcomes like the FaintPenalty below can check to see how many cycles have failed before
	//applying the outcome.
	OUTCOME
	{
		//Name of the outcome. In this case it's the FaintPenalty. For this to be applied, fainting must be enabled in game settings.
		name = FaintPenalty

		//If true, then the outcome will be chosen at random and applied if random penalties are enabled. Otherwise it will always be applied.
		//Default is false.
		canBeRandom = false

		//Message to show to the player. You can omit this for a silent outcome.
		playerMessage = is fainting from lack of Juice!

		//The following fields depend upon the name of the outcome.

		//The name of the resource to check for failed process cycles.
		resourceName = FreshJuice

		//Number of cycles before fainting occurs.
		cyclesBeforeFainting = 1

		//How many seconds to faint for.
		faintDurationSeconds = 180
	}

	OUTCOME
	{
		name = DeathPenalty
		playerMessage = has died of thirst!
		resourceName = FreshJuice
		cyclesBeforeDeath = 6
	}
}

@PART[ISRU]
{
	MODULE
	{
		name = SnacksConverter
		ConverterName = Juice Machine
		StartActionName = Start Juice Machine
		StopActionName = Stop Juice Machine
		AutoShutdown = false
		GeneratesHeat = false
		UseSpecialistBonus = true
		ExperienceEffect = ConverterSkill
		EfficiencyBonus = 1.0
	 
		INPUT_RESOURCE
		{
			ResourceName = LiquidFuel
			Ratio = 0.1
			FlowMode = ALL_VESSEL
  		}

		INPUT_RESOURCE
		{
			ResourceName = ElectricCharge
			Ratio = 3
		}

		OUTPUT_RESOURCE
		{
			ResourceName = FreshJuice
			Ratio = 0.1
			DumpExcess = false
			FlowMode = ALL_VESSEL
		}
	}
}

@PART[MiniISRU]
{
	MODULE
	{
		name = SnacksConverter
		ConverterName = Juice Machine
		StartActionName = Start Juice Machine
		StopActionName = Stop Juice Machine
		AutoShutdown = false
		GeneratesHeat = false
		UseSpecialistBonus = true
		ExperienceEffect = ConverterSkill
		EfficiencyBonus = 1.0
	 
		INPUT_RESOURCE
		{
			ResourceName = LiquidFuel
			Ratio = 0.01
			FlowMode = ALL_VESSEL
  		}

		INPUT_RESOURCE
		{
			ResourceName = ElectricCharge
			Ratio = 3
		}

		OUTPUT_RESOURCE
		{
			ResourceName = FreshJuice
			Ratio = 0.01
			DumpExcess = false
			FlowMode = ALL_VESSEL
		}
	}
}

@PART[radialSnackTin]
{
	@MODULE[SnacksResourceSwitcher]
	{
		OPTION
		{
			name = FreshJuice

			RESOURCE
			{
				name = FreshJuice
				amount = 150
				maxAmount = 150
			}
		}

		OPTION
		{
			name = BadJuice

			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 150
			}
		}

		OPTION
		{
			name = Fresh and Bad Juice

			RESOURCE
			{
				name = FreshJuice
				amount = 75
				maxAmount = 75
			}
			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 75
			}
		}	
	}
}


@PART[snackTin500]
{
	@MODULE[SnacksResourceSwitcher]
	{
		OPTION
		{
			name = FreshJuice

			RESOURCE
			{
				name = FreshJuice
				amount = 500
				maxAmount = 500
			}
		}

		OPTION
		{
			name = BadJuice

			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 500
			}
		}

		OPTION
		{
			name = Fresh and Bad Juice 

			RESOURCE
			{
				name = FreshJuice
				amount = 250
				maxAmount = 250
			}
			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 250
			}
		}	
	}
}

@PART[snackTin1500]
{
	@MODULE[SnacksResourceSwitcher]
	{
		OPTION
		{
			name = FreshJuice

			RESOURCE
			{
				name = FreshJuice
				amount = 1500
				maxAmount = 1500
			}
		}

		OPTION
		{
			name = BadJuice

			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 1500
			}
		}

		OPTION
		{
			name = Fresh and Bad Juice 

			RESOURCE
			{
				name = FreshJuice
				amount = 750
				maxAmount = 750
			}
			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 750
			}
		}	
	}
}

@PART[snackTin4500]
{
	@MODULE[SnacksResourceSwitcher]
	{
		OPTION
		{
			name = FreshJuice

			RESOURCE
			{
				name = FreshJuice
				amount = 4500
				maxAmount = 4500
			}
		}

		OPTION
		{
			name = BadJuice

			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 4500
			}
		}

		OPTION
		{
			name = Fresh and Bad Juice 

			RESOURCE
			{
				name = FreshJuice
				amount = 2250
				maxAmount = 2250
			}
			RESOURCE
			{
				name = BadJuice
				amount = 0
				maxAmount = 2250
			}
		}	
	}
}

 

Evidently it can....literally a quick search & replace job for a bit of fun

8Dq94cI.png

Link to comment
Share on other sites

Yup! You could even emulate @Kuzzter‘s “Hydrazine” in Snacks, with the potential to pass out each time you consume the beverage. :) If desired, you could have no penalty for running out except maybe more Stress, and with the possibility of passing out, you could also reduce Stress...

Something like:

Drink a unit of Hydrazine, no penalties for running out. Precondition: Stress > 10. Precondition: random chance.

Event: successful consumption of Hydrazine reduces Stress.

Event: successful consumption of Hydrazine has a chance of the kerbal passing out.

SnacksConverter converts MonoPropellant into Hydrazine.

 

The above will first check to see if the kerbal has some Stress, then check a random number to see if the kerbal consumes Hydrazine. If so, the events will reduce Stress, and then have a possibility of the kerbal passing out. Homework: figure out how to edit config files to do that. :) I might also use Hydrazine as a tutorial...

Edited by Angel-125
Link to comment
Share on other sites

3 hours ago, panarchist said:

Ok, I am definitely switching back to Snacks from TAC-LS. Looks like it's time to start writing some MM patches again. WHOA - nice documentation in the Github wiki. Thanks, @Angel-125 !

You're welcome! I tried to make it as comprehensive as possible for people to write their own processors and events.  :)

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

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