Jump to content

[1.10.1+] Contract Configurator [v1.30.5] [2020-10-05]


nightingale

Recommended Posts

Yeah, the support for disabling of contracts is intended for developers who want to replace stock contracts. It's a little bit more challenging technically speaking, but I'll consider supporting that in-game for stock contracts in-game (since it makes sense to have it all in one spot).

Actually it opens up an ugly can of worms if I don't support it. Suppose you have a contract pack "Some Guy's Part Testing" (not to be confused with sumghai). This contract pack removes the part testing contracts, and replaces them with something different. If you disable this contract pack, ideally one would expect it to work as if it wasn't installed in that save (ie. stock part testing contracts should come back). So the easiest way is to just give the end-user control (which means a little bit more work for them in re-enabling them in a new save).

Link to comment
Share on other sites

Hi

There is a MM file/ Mod on Kerbalstuff to disable all stock contracts. Maybe you can use this as a starting point just search for stock contracts.

Hope this helps :-)

Not really. :) As Yemo points out, I already have that functionality.

When I say "technically challenging", I don't mean that I don't know how to do it - just that I have to be careful how it's done. It needs to be careful to put things in the right state when a user either loads up a save or when starting a new game. Right now it takes the simplistic approach of disabling whatever needs disabling on game start and never looking back.

Link to comment
Share on other sites

I have an issue where the contracts disappear after switching to the KSC or leaving the game. This only happens with some contract packs. Remote tech pack and Kerbin station are two. What am i doing wrong?

Please don't cross post the same issue on multiple threads.

Link to comment
Share on other sites

I made my first contract! Woooo!

Great mod. Still learning things, but I will make my own contract pack eventually!

E: is it possible to spawn vessels with this?

Edited by Veeltch
Link to comment
Share on other sites

I made my first contract! Woooo!

Great mod. Still learning things, but I will make my own contract pack eventually!

E: is it possible to spawn vessels with this?

Yes with the vessel spawner behaviour look at the wiki.

Also nightingale I just release my contract pack can you add it to the op

http://forum.kerbalspaceprogram.com/threads/127138

Link to comment
Share on other sites

I just wanted to try out some contract packs, but they don't show up in the mission control center. Is there something I am doing wrong, or is this a bug?

I installed the contract packs Field Research, RemoteTech and SCANSat.

Link to comment
Share on other sites

I just wanted to try out some contract packs, but they don't show up in the mission control center. Is there something I am doing wrong, or is this a bug?

I installed the contract packs Field Research, RemoteTech and SCANSat.

You probably haven't enough rep for those contracts to start showing up. And asking the obvious, you have the RemoteTech and SCANSat mods installed too, right?

Link to comment
Share on other sites

You probably haven't enough rep for those contracts to start showing up. And asking the obvious, you have the RemoteTech and SCANSat mods installed too, right?

Yes I have them installed :D

But I think I found the problem, I started a new career game and now the contracts show up when I research the tech. Is it possible that the contracts only start if you research the tech and not if you have it already researched?

Link to comment
Share on other sites

Yes I have them installed :D

But I think I found the problem, I started a new career game and now the contracts show up when I research the tech. Is it possible that the contracts only start if you research the tech and not if you have it already researched?

If a contract requires a tech, it shouldn't matter if you already had the tech unlocked when you installed the pack. As far as I know.

Link to comment
Share on other sites

Yes I have them installed :D

But I think I found the problem, I started a new career game and now the contracts show up when I research the tech. Is it possible that the contracts only start if you research the tech and not if you have it already researched?

You should try the debug console (alt+f10) and look for the contract then press force check requirements and if all appear green mean that the contract should appear if any appear yellow you should look at it an see what are you missing.

Edited by CosmoBro
Link to comment
Share on other sites

I keep getting a "None Kerbin" contract. Does anyone else get that?

No idea what this is. Perhaps a screenshot of the contract and of the alt-f10 debug menu?

- - - Updated - - -

If a contract requires a tech, it shouldn't matter if you already had the tech unlocked when you installed the pack. As far as I know.

That is indeed correct.

Link to comment
Share on other sites

So after some practice I now have a contract wich works propper and I want to use it to expand on.

But there are some things I'm not sure about, so i thought I might just post it here and mark the places wich stil confuse me and hope someone can explain^^

To keep it simple: Red is about forcing the player to do things in order, but i don't know if it is really necessary because my contract is build like this:

[start, Do a thing, land on the runway] when those parameters are met, you have to [wait 25 seconds] and then [recover the vessel]

Blue is something with WP0 and index = 0 and I really have no clue how that works, althou it seems to work.

And green is some index stuff with kerbals


//Experimental, first contract I made wich I'm really proud of. But its stil verry basic, and I dont understand some things


CONTRACT_TYPE
{

//Basic definition:

name = TouristFlight1
title = Tourist Photo-Flight
group = Tourists
agent = Kerbal Aircraft Builders

//Texts to be displayed in the description:

description = Since we're a bit short on funds, we need to fly some of those tourists over to the island and show them kerbins beautiful wildlife
synopsis = Get them abord and fly them arround a bit.
completedMessage = Mission Accomplished!

//All that contract related stuff:

minExpiry = 1.0
maxExpiry = 7.0
deadline = 500
cancellable = true
declinable = true
autoAccept = false

targetBody = Kerbin

maxSimultaneous = 1

rewardScience = 10.0
rewardReputation = 20.0
rewardFunds = 12000.0
failureReputation = 20.0
failureFunds = 12000.0
advanceFunds = 4000.0

weight = 5.0

//Whats required?

//Wait 10 days to do the mission again
REQUIREMENT
{
name = CompleteContract
type = CompleteContract
contractType = TouristFlight1
minCount = 0
cooldownDuration = 10d
}

//The main part of the contract

//Load a tourist
PARAMETER
{

//Forces the vessel to have exactly 1 passenger
name = HasPassengers
type = HasPassengers
count = 1

[COLOR=#ff0000] //This one makes sure the player completes all the main REQUIREMENTS in correct order
completeInSequence = true
[/COLOR]
//"title" is the text wich is displayed in the contracts app
title = Pre-Launchcheck

}

//Define the vessel to prevent cheating
PARAMETER
{
//Gives the vessel the name "Cap1"
name = VesselParameterGroup
type = VesselParameterGroup
define = Cap1

//title wich is displayed to coat the "vesselnamecreation"
title = Get to the island airfield

[COLOR=#ff0000]completeInSequence = true[/COLOR]

//Get to the waypoint not sure what all this does :/
PARAMETER
{
[COLOR=#0000cd]//Seems to define it as the first waypoint created later in the BEHAVIOUR section?
name = WP0

//?!?
type = All
[/COLOR]
title = Photosession!

//Placeholder, could add a "situation"
PARAMETER
{
//This is about visiting the waypoint
name = VisitWaypoint
type = VisitWaypoint

//titel again to coat everything
title = Perform a flyby and let the tourist take some actionshots

[COLOR=#0000cd]//?!? has something to do with the WP0 above??
index = 0[/COLOR]

//The max distance for the waypoint to be concidered done
distance = 1000

[COLOR=#ff0000] //This makes the PARAMETER checked even if you get out of distance again
//(Since the main PARAMETER has "completeINSequence = true" I don't know if this is necessary?!?
disableOnStateChange = true[/COLOR]
}

}
}

//get back to KSC and land
PARAMETER
{
name = land
type = ReachState

title = Land back at the KSC

//Land on the runway
situation = LANDED
biome = Runway
[COLOR=#ff0000]
//again don't know if they're both necessary
disableOnStateChange = false
completeInSequence = true[/COLOR]
}

//Some countdown to make sure the craft is landed and functional --> no crashlanding!
PARAMETER
{
name = Duration
type = Duration
duration = 25s
preWaitText = Give the tourist some time to recover
waitingText = He seems a bit greener than usual
completionText = And he puked, great!!!

[COLOR=#ff0000] //again don't know if they're both necessary
completeInSequence = true
disableOnStateChange = false[/COLOR]
}

//works with PARAMETER above to prevent crashlandings
PARAMETER
{
name = VesselNotDestroyed
type = VesselNotDestroyed

[COLOR=#ff0000] //necessary?
completeInSequence = true
[/COLOR]
title = Don't crash!
}

//Recovers the kerbal
PARAMETER
{
name = RecoverKerbal
type = RecoverKerbal

[COLOR=#006400] //?!?
index = 0[/COLOR]

}
//The following creates a kerbal tourist and a waypoint

//The kerbal
BEHAVIOUR
{
name = SpawnPassengers
type = SpawnPassengers
count = 1

kerbalType = Tourist
}

//Waypointgenerator kicks in ..
BEHAVIOUR
{

name = WaypointGenerator
type = WaypointGenerator

// .. and creates a waypoint "IslandAirfield"
WAYPOINT
{

name = IslandAirfield
icon = marker
altitude = 1000
latitude = -1.48
longitude = -71.8506
}
}

}

So i hope someone can help, would be nice.

And a I have another little question: how do I make the name of the randomly generated tourist appear in let's say the titel of the first PARAMETER?

Link to comment
Share on other sites

No idea what this is. Perhaps a screenshot of the contract and of the alt-f10 debug menu?

I'll get one next time it comes up.

Update: Somehow I selected this...

VUhIilN.jpg

Edited by blnk2007
Link to comment
Share on other sites

Contract Configurator asked me to post this:

Exception occured while attempt to generate contract of type 'Lunokhod-1':

System.InvalidOperationException: Operation is not valid due to the current state of the object

at System.Linq.Enumerable.First[CelestialBody] (IEnumerable`1 source) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator.Initialize () [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator..ctor (ContractConfigurator.Behaviour.WaypointGenerator orig, ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGeneratorFactory.Generate (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.BehaviourFactory.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract, System.Collections.Generic.List`1 behaviourNodes) [0x00000] in <filename unknown>:0

at ContractConfigurator.ContractType.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfiguredContract.Initialize (ContractConfigurator.ContractType contractType) [0x00000] in <filename unknown>:0

I've got a bajillion mods (Realism Overhaul, all its dependencies and suggestions, and a ton more besides), so it could easily be an interaction. Log is here: https://www.dropbox.com/s/dwbya7lyf5epys1/output_log%20contract%20configurator%201%20Jul%202015.txt?dl=0

Link to comment
Share on other sites

Contract Configurator asked me to post this:

Exception occured while attempt to generate contract of type 'Lunokhod-1':

System.InvalidOperationException: Operation is not valid due to the current state of the object

at System.Linq.Enumerable.First[CelestialBody] (IEnumerable`1 source) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator.Initialize () [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator..ctor (ContractConfigurator.Behaviour.WaypointGenerator orig, ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGeneratorFactory.Generate (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.BehaviourFactory.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract, System.Collections.Generic.List`1 behaviourNodes) [0x00000] in <filename unknown>:0

at ContractConfigurator.ContractType.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfiguredContract.Initialize (ContractConfigurator.ContractType contractType) [0x00000] in <filename unknown>:0

I've got a bajillion mods (Realism Overhaul, all its dependencies and suggestions, and a ton more besides), so it could easily be an interaction. Log is here: https://www.dropbox.com/s/dwbya7lyf5epys1/output_log%20contract%20configurator%201%20Jul%202015.txt?dl=0

Can't tell much from the log and I couldn't confirm if you're using Win KSP x64. Can you post ksp.log instead?

Link to comment
Share on other sites

Can't tell much from the log and I couldn't confirm if you're using Win KSP x64. Can you post ksp.log instead?

Can't confirm now because I'm on the phone but I think he put a Dropbox link for the output log on the last part of the post https://www.dropbox.com/s/dwbya7lyf5epys1/output_log%20contract%20configurator%201%20Jul%202015.txt?dl=0

Link to comment
Share on other sites

So after some practice I now have a contract wich works propper and I want to use it to expand on.

But there are some things I'm not sure about, so i thought I might just post it here and mark the places wich stil confuse me and hope someone can explain^^

To keep it simple: Red is about forcing the player to do things in order, but i don't know if it is really necessary because my contract is build like this:

[start, Do a thing, land on the runway] when those parameters are met, you have to [wait 25 seconds] and then [recover the vessel]

Blue is something with WP0 and index = 0 and I really have no clue how that works, althou it seems to work.

And green is some index stuff with kerbals


//Experimental, first contract I made wich I'm really proud of. But its stil verry basic, and I dont understand some things


CONTRACT_TYPE
{

//Basic definition:

name = TouristFlight1
title = Tourist Photo-Flight
group = Tourists
agent = Kerbal Aircraft Builders

//Texts to be displayed in the description:

description = Since we're a bit short on funds, we need to fly some of those tourists over to the island and show them kerbins beautiful wildlife
synopsis = Get them abord and fly them arround a bit.
completedMessage = Mission Accomplished!

//All that contract related stuff:

minExpiry = 1.0
maxExpiry = 7.0
deadline = 500
cancellable = true
declinable = true
autoAccept = false

targetBody = Kerbin

maxSimultaneous = 1

rewardScience = 10.0
rewardReputation = 20.0
rewardFunds = 12000.0
failureReputation = 20.0
failureFunds = 12000.0
advanceFunds = 4000.0

weight = 5.0

//Whats required?

//Wait 10 days to do the mission again
REQUIREMENT
{
name = CompleteContract
type = CompleteContract
contractType = TouristFlight1
minCount = 0
cooldownDuration = 10d
}

//The main part of the contract

//Load a tourist
PARAMETER
{

//Forces the vessel to have exactly 1 passenger
name = HasPassengers
type = HasPassengers
count = 1

[COLOR=#ff0000] //This one makes sure the player completes all the main REQUIREMENTS in correct order
completeInSequence = true
[/COLOR]
//"title" is the text wich is displayed in the contracts app
title = Pre-Launchcheck

}

//Define the vessel to prevent cheating
PARAMETER
{
//Gives the vessel the name "Cap1"
name = VesselParameterGroup
type = VesselParameterGroup
define = Cap1

//title wich is displayed to coat the "vesselnamecreation"
title = Get to the island airfield

[COLOR=#ff0000]completeInSequence = true[/COLOR]

//Get to the waypoint not sure what all this does :/
PARAMETER
{
[COLOR=#0000cd]//Seems to define it as the first waypoint created later in the BEHAVIOUR section?
name = WP0

//?!?
type = All
[/COLOR]
title = Photosession!

//Placeholder, could add a "situation"
PARAMETER
{
//This is about visiting the waypoint
name = VisitWaypoint
type = VisitWaypoint

//titel again to coat everything
title = Perform a flyby and let the tourist take some actionshots

[COLOR=#0000cd]//?!? has something to do with the WP0 above??
index = 0[/COLOR]

//The max distance for the waypoint to be concidered done
distance = 1000

[COLOR=#ff0000] //This makes the PARAMETER checked even if you get out of distance again
//(Since the main PARAMETER has "completeINSequence = true" I don't know if this is necessary?!?
disableOnStateChange = true[/COLOR]
}

}
}

//get back to KSC and land
PARAMETER
{
name = land
type = ReachState

title = Land back at the KSC

//Land on the runway
situation = LANDED
biome = Runway
[COLOR=#ff0000]
//again don't know if they're both necessary
disableOnStateChange = false
completeInSequence = true[/COLOR]
}

//Some countdown to make sure the craft is landed and functional --> no crashlanding!
PARAMETER
{
name = Duration
type = Duration
duration = 25s
preWaitText = Give the tourist some time to recover
waitingText = He seems a bit greener than usual
completionText = And he puked, great!!!

[COLOR=#ff0000] //again don't know if they're both necessary
completeInSequence = true
disableOnStateChange = false[/COLOR]
}

//works with PARAMETER above to prevent crashlandings
PARAMETER
{
name = VesselNotDestroyed
type = VesselNotDestroyed

[COLOR=#ff0000] //necessary?
completeInSequence = true
[/COLOR]
title = Don't crash!
}

//Recovers the kerbal
PARAMETER
{
name = RecoverKerbal
type = RecoverKerbal

[COLOR=#006400] //?!?
index = 0[/COLOR]

}
//The following creates a kerbal tourist and a waypoint

//The kerbal
BEHAVIOUR
{
name = SpawnPassengers
type = SpawnPassengers
count = 1

kerbalType = Tourist
}

//Waypointgenerator kicks in ..
BEHAVIOUR
{

name = WaypointGenerator
type = WaypointGenerator

// .. and creates a waypoint "IslandAirfield"
WAYPOINT
{

name = IslandAirfield
icon = marker
altitude = 1000
latitude = -1.48
longitude = -71.8506
}
}

}

So i hope someone can help, would be nice.

The way you have the questions in the contract makes it kind of awkward to answer inline. So I'm just listing stuff out.

  1. completeInSequence has nothing to do with REQUIREMENT nodes - only PARAMETER nodes.
  2. Your WP0 name for the All parameter is only meaningful for expressions
  3. If you're unsure what the All parameter is, read this.
  4. If you're unsure what the index in VisitWaypoint refers to, read this.

In general if there's issues with something in the doco being confusing, let me know, and I'll try and beef it up (I'm currently in the process of doing a documentation improvement pass).

And a I have another little question: how do I make the name of the randomly generated tourist appear in let's say the titel of the first PARAMETER?

Currently not possible. Raise a GitHub issue and I'll see what can be done (be warned there's a bit of a backlog on feature requests).

- - - Updated - - -

Contract Configurator asked me to post this:

Exception occured while attempt to generate contract of type 'Lunokhod-1':

System.InvalidOperationException: Operation is not valid due to the current state of the object

at System.Linq.Enumerable.First[CelestialBody] (IEnumerable`1 source) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator.Initialize () [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGenerator..ctor (ContractConfigurator.Behaviour.WaypointGenerator orig, ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.Behaviour.WaypointGeneratorFactory.Generate (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.BehaviourFactory.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract, System.Collections.Generic.List`1 behaviourNodes) [0x00000] in <filename unknown>:0

at ContractConfigurator.ContractType.GenerateBehaviours (ContractConfigurator.ConfiguredContract contract) [0x00000] in <filename unknown>:0

at ContractConfigurator.ConfiguredContract.Initialize (ContractConfigurator.ContractType contractType) [0x00000] in <filename unknown>:0

I've got a bajillion mods (Realism Overhaul, all its dependencies and suggestions, and a ton more besides), so it could easily be an interaction. Log is here: https://www.dropbox.com/s/dwbya7lyf5epys1/output_log%20contract%20configurator%201%20Jul%202015.txt?dl=0

Well, I'm not going to do too much digging, because this one jumped right out at me:

ContractConfigurator.ContractType: CONTRACT_TYPE 'AS_Bop_DeadKraken':Error parsing targetBody
ArgumentException: 'Bop' is not a valid CelestialBody.

Basically, you have contract packs that don't support RSS installed with RSS. Lunokhod-1 I'm guessing is from Historic Missions? I think WhiteCat said that he was adding RSS support soon-ish.

Anyway, I'll still fix this issue (as what really should happen is that the contract should fail to load, rather than letting it get this far). Also, I'm considering updating Anomaly Surveyor to disable itself when RSS is in use to prevent false-positives from being reported. Then again, if I do that, I'll get people who say "I installed it but get no contracts", which might be worse still to investigate.

- - - Updated - - -

Can't tell much from the log and I couldn't confirm if you're using Win KSP x64. Can you post ksp.log instead?

Agree as I prefer KSP.log (because why anyone would "double space" a log file like output_log.txt is beyond me). But as for the Win64 bit, that much I can confirm is not the case. In a recent update I changed my logging framework to pretty much spam out "THIS IS WIN64" or something to that effect so that I never get fooled again. :)

Link to comment
Share on other sites

Hi

First of all, tanks for your mod! It makes the career mode so much more interesting to allow so many new contract types. I wonder why this is not a Stock feature.

However I think I discovered an error.

I use KSP 1.0.4 and Contract Configurator 1.5.0.

The important mods are here:

- Contrack Pack: Field Research

- Tarsier Space Technology

- Community Tech Tree

- SETIctt mod

So now what happens:

I get contracts from the Field Research Contract Pack to do some experiments around the KSC. I looked at the code of this contract and it uses the CC function "AvailableExperiments(<body: Homeworld>)" to get a list of experiments. When I understand the Contract Configurator Source Code correctly, this function should only return experiments that are really available for the parts, the player can use.

However this Contract asked me all the time to do experiments with ChemCam (a part from Tarsier Space Technology, that is only later available in Tech Tree). So something seems to be broken with the check, if the part that can do this experiment is available or not.

Maybe it is not a Contract Configurator issue. Maybe the Community Tech Tree has issues to fill the "ResearchAndDevelopment.PartTechAvailable" list correctly.

Or the SETIctt makes some things with this list.

Or maybe the Tarsier Space Technology mod uses a different way to create this experiment, so it will always be available independent of the part-availability.

Does anyone has an idea how to start debugging this?

Link to comment
Share on other sites

Ok I look more closely at the CC code and added some Debug-Logs to look inside the data structures. I think I have an idea why this happens:

In file Science.cs, function AvailableExperiments() I can see this line:


[FONT=Consolas] [COLOR=#333333]experiments[/COLOR][COLOR=#333333]=[/COLOR][COLOR=#333333]experiments[/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]Where[/COLOR][COLOR=#333333]([/COLOR][COLOR=#333333]exp[/COLOR][COLOR=#333333]=[/COLOR][COLOR=#333333]>[/COLOR][COLOR=#333333] ![/COLOR][COLOR=#333333]experimentParts[/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]ContainsKey[/COLOR][COLOR=#333333]([/COLOR][COLOR=#333333]exp[/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]id[/COLOR][COLOR=#333333])[/COLOR][COLOR=#333333] || [/COLOR][COLOR=#333333]experimentParts[/COLOR][COLOR=#333333][[/COLOR][COLOR=#333333]exp[/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]id[/COLOR][COLOR=#333333]][/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]Any[/COLOR][COLOR=#333333]([/COLOR][COLOR=#3364a4]ResearchAndDevelopment[/COLOR][COLOR=#333333].[/COLOR][COLOR=#333333]PartTechAvailable[/COLOR][COLOR=#333333]))[/COLOR][COLOR=#333333];[/COLOR][/FONT]

The intention of this line is to filter only those experiments where the parts are available for the player. In the lines above the code tries to get a list of all available parts and their experiments.

However something looks strange here: According to the expression it allows an experiment either when there is not part that can do this experiment or when this part (when there is a part) is available for the player.

I wonder: Why do you allow experiments, where is no part defined to do those experiments?

Is there a special reason or is this only a "hidden" check, if a part is in the list before you try to access this list (to prevent exceptions)?

Anyway the ChemCam is for some reasons not in the list. But the part is available in the TechTree, so I guess there in another error with the Part-Definition of the ChemCam that triggers the first test-stastement of this expression and this leads to the situation that such an experiment is chosen by the "Field Resource" contracts.

I simply need to find out, why the part is not found even when it exists.

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