Spacegate

Veracity

Developer
Staff member
I'm working on a Spacegate script. I'm naming it VeracitySpacegate because Ezandora already has a script named Spacegate. Mine will be better, but hers came first, so she has precedence for the simple name. :)

My script will allow you specify a primary goal (and optionally a secondary goal). I'm thinking the following:

Space Pirate
Procrastinator
Space Baby

(the above are multi-day quests. Where you are in the quest is determined by current items you own and/or current language proficiency. This is the same kind of thing I do in my GingerbreadCity script.)

Research (all rocks)
Anomalous Plants
Anomalous Animals
Trophy (hostile alien rare item - blowgun, loincloth, necklace, spear, totem)
Trade Item (food, booze, medicine, mask)
(Maybe Spants and Murderbots; personally, I don't see the point, but if you are farming the outfit, say, why not?)

You can specify the maximum difficulty you're prepared for - A-Z (or 0-25)
You can specify the minimum level of language proficience before proceeding in the skill quests

When you visit a planet with this script, it will record all the encounters and generate a "planet" record with all the things that the Spacegate terminal doesn't tell you: what kind of Spants or Murderbots, which Ancient Ruins are there, what trade item is available for how much, and so on. It will save this in SpacegatePlanetsMine.txt.

I don't have that script coded yet because it depends on a solid planet database - and that is what I am releasing here.
It may be useful to others, and I welcome comments and suggestions.

Code:
git checkout Veracity0/spacegate

You get three scripts in "scripts"

SpacegateData.ash - the data structures
SpacegateExplorer - simple (for now) way to look at planets
SpacegateImport - imports the public spreadsheet into my required data format

You get four data files in "data"

Spacegate.tsv - the "tab separated values" from the public spreadsheet: exported, concatenated, headers and blank lines removed
SpacegatePlanetsPublic.txt - the result of "importing" Spacegate.txv into my "planet" data structure, indexed by coordinates
SpacegatePlanetsPublicCompact.txt - an experimental compact representation which puts the non-cosmetic data into a single 32-bit code
SpacegatePlanetsVeracity.txt - planets that I have personally visited over the last few weeks. Contains, for example, trophies.

Loading data goes like this:

Load SpacegatePlanetsPublic
Load SpacegatePlanetsVeracity - my validated planets supersede (frequently erroneous) planets from the Public data
Load SpacegatePlanetsMine - planets you have visited also override (possibly erroneous) Public planets - but not the built-in Veracity planets, which have trophies and such.

Here is what SpacegateExplorer does, at the moment:

Code:
[color=green]> SpacegateExplorer ZDPZSCS[/color]

Planet Name: Sigma North VI (difficulty = 25)
Coordinates: ZDPZSCS

Environmental Hazards:
  magnetic storms
  irradiated
  high gravity
Elemental Hazards:
  hot solar flares
  frigid zones
  nasty gases
Plant Life: primitive
Animal Life: none detected
Intelligent Life: detected (hostile) (primitive alien totem}
DANGER: Murderbot frequencies detected (drones and soldiers)
ALERT: ANCIENT RUINS DETECTED (Procrastinators 1: That's No Moonlith, it's a Monolith!)
Reminiscent of what the terminal tells you, but with additional annotations.

There is a large comment at the top of SpacegateData.ash which explains my reasoning about what (non-cosmetic) data distinguishes a planet. In brief, I posit that the first letter determines the difficulty but nothing about what is on the planet, and the other 6 letters provide about 28.5 bits of information which determines everything the terminal (and the annotations) displays. Things like which images are used for plants, animals, aliens, the planet name, the flavor text of suns, moons, clouds, et.c when you visit, and so on, are constant for a particular planet - and are obviously determined from the letters, and are also procedurally generated by selecting bits from the letters. It would be fun to figure that out, but it's not worth storing that info in the planet data structure, in my opinion.

I am sure that the encounter mix is randomized, with parameters. The spreadsheet saying "such-and-such a planet has maximum anomalous plants - 6" - is based on a sample of one visit; when I went there, there were 3, and correspondingly more of the other life forms. If you really want to "maximize" the number of a particular life type, you likely have to go to a planet which has no other kinds of life.

Comments and suggestions welcome.
 
Regarding errors in the public spreadsheet:

I added a lot of data checking and now get this when I import:

Code:
[color=green]> SpacegateImport[/color]

Importing Spacegate planet data from Spacegate.tsv
1541 planets found

Converting data to usable format.
[color=red]AAAAAAC: Murderbots not detected but units supposedly present.
AAAAAAE: Spants not detected but units supposedly present.
AAAAAAG: Murderbots not detected but units supposedly present.
AAAAAAN: Spants not detected but units supposedly present.
AAAAAAP: Murderbots detected but both an artifact and units supposedly present.
AAAAAAP: Spants detected but both an artifact and units supposedly present.
AAAAAAS: Spants not detected but artifact supposedly present.
AAAAAAU: Murderbots not detected but units supposedly present.
AAAAAAV: Spants not detected but artifact supposedly present.
AAAAAAW: Spants not detected but units supposedly present.
AAAAAAX: Murderbots not detected but artifact supposedly present.
AAAAAAX: Spants not detected but units supposedly present.
AAAAAAY: Spants not detected but artifact supposedly present.
AAAAAAZ: Spants not detected but units supposedly present.
AAAAABB: Murderbots not detected but units supposedly present.
AAAAABE: Purported trade item: 'salad (13.4k)' but no intelligent life detected
AAAAABF: Spants not detected but units supposedly present.
AAAAABG: Spants not detected but units supposedly present.
AAAAABK: Spants not detected but units supposedly present.
AAAAABM: Purported trade item: 'booze (11.9k)' but no intelligent life detected
AAAAABN: Spants not detected but units supposedly present.
AAAAABO: Purported trade item: 'booze (19.9k)' but no intelligent life detected
AAAAABP: Purported trade item: 'salad (13.6k)' but hostile intelligent life detected
AAAAABS: Purported trade item: 'salad (14.9k)' but no intelligent life detected
AAAAABT: Spants not detected but units supposedly present.
AAAAABV: Spants not detected but units supposedly present.
AAAAABX: Purported trade item: 'salad (14.4k)' but no intelligent life detected
AAAAABY: Murderbots not detected but units supposedly present.
AAAABAA: Murderbots not detected but units supposedly present.
AAAABAB: Murderbots not detected but artifact supposedly present.
AAAABAC: Murderbots not detected but units supposedly present.
AAAABAC: Spants not detected but artifact supposedly present.
AAAABCA: Spants not detected but units supposedly present.
AAAABCB: Murderbots not detected but units supposedly present.
AAAACAA: Spants not detected but units supposedly present.
AAAACAC: Purported trade item: 'salad (19.9k)' but hostile intelligent life detected
AAAACAC: Murderbots not detected but units supposedly present.
AAAACAC: Spants not detected but units supposedly present.
AAAACBB: Murderbots not detected but units supposedly present.
AAAACBC: Purported trade item: 'booze (24.3k)' but no intelligent life detected
AAAACBC: Murderbots not detected but units supposedly present.
AAAACCA: Spants detected but both an artifact and units supposedly present.
AAAACCC: Purported trade item: 'booze (22.4k)' but no intelligent life detected
AAABAAA: Spants not detected but units supposedly present.
AAABAAC: Purported trade item: 'salad (19.9k)' but no intelligent life detected
AAABABA: Murderbots detected but both an artifact and units supposedly present.
AAABABB: Spants not detected but units supposedly present.
AAABACB: Murderbots not detected but artifact supposedly present.
AAABACC: Spants not detected but artifact supposedly present.
AAABBAC: Spants not detected but artifact supposedly present.
AAABBBA: Purported trade item: 'medicine (24.7k)' but no intelligent life detected
AAABBBC: Murderbots not detected but units supposedly present.
AAABBBE: Murderbots not detected but units supposedly present.
AAABBBF: Spants not detected but units supposedly present.
AAABBBG: Purported trade item: 'Medicine (18.8k)' but no intelligent life detected
AAABBCC: Murderbots not detected but units supposedly present.
AAABBCC: Spants not detected but units supposedly present.
AAABCAB: Spants not detected but units supposedly present.
AAABCAC: Murderbots not detected but units supposedly present.
AAABCBB: Murderbots not detected but artifact supposedly present.
AAABCCB: Spants not detected but units supposedly present.
AAABCCC: Spants not detected but artifact supposedly present.
AAACAAB: Murderbots not detected but units supposedly present.
AAACAAC: Murderbots not detected but artifact supposedly present.
AAACAAC: Spants not detected but units supposedly present.
AAACABA: Spants not detected but artifact supposedly present.
AAACABC: Murderbots not detected but units supposedly present.
AAACBAB: Spants not detected but units supposedly present.
AAACBAC: Purported trade item: 'medicine 24k' but hostile intelligent life detected
AAACCAB: Spants not detected but units supposedly present.
AAACCAC: Murderbots not detected but artifact supposedly present.
AAACCBA: Purported trade item: 'medicine 14.9k' but no intelligent life detected
AAACCBB: Murderbots not detected but units supposedly present.
AAACCBC: Murderbots not detected but units supposedly present.
AAACCCB: Murderbots not detected but units supposedly present.
AAACIJD: Murderbots not detected but units supposedly present.
AAACIJD: Spants not detected but units supposedly present.
AABAAAB: Murderbots not detected but units supposedly present.
AABAAAC: Spants not detected but units supposedly present.
AABABAC: Spants not detected but units supposedly present.
AABABCA: Spants not detected but artifact supposedly present.
AABACAA: Purported trade item: 'medicine (17.4k)' but hostile intelligent life detected
AABACAA: Murderbots not detected but units supposedly present.
AABACAB: Spants not detected but units supposedly present.
AABACAC: Murderbots not detected but artifact supposedly present.
AABACAC: Spants not detected but units supposedly present.
AABACCC: Purported trade item: 'medicine (17.4k)' but no intelligent life detected
AABACCC: Murderbots not detected but units supposedly present.
AABBABC: Murderbots not detected but units supposedly present.
AABBABC: Spants not detected but artifact supposedly present.
AABBACC: Spants not detected but units supposedly present.
AABBBBA: Purported trade item: 'booze 29.8k' but hostile intelligent life detected
AABBBBA: Spants not detected but units supposedly present.
AABBBBC: Murderbots not detected but units supposedly present.
AABBBCB: Purported trade item: 'mask (235k)' but hostile intelligent life detected
AABBBCB: Murderbots not detected but units supposedly present.
AABBBCC: Spants not detected but units supposedly present.
AABBCAC: Murderbots not detected but units supposedly present.
AABBCBB: Murderbots not detected but units supposedly present.
AABBCBC: Spants not detected but units supposedly present.
AABBCCA: Murderbots not detected but artifact supposedly present.
AABCAAA: Murderbots not detected but artifact supposedly present.
AABCAAB: Spants not detected but units supposedly present.
AABCABA: Murderbots not detected but artifact supposedly present.
AABCABB: Spants not detected but artifact supposedly present.
AALAAAD: Murderbots not detected but artifact supposedly present.
AARRGHH: Spants not detected but artifact supposedly present.
AASRPEM: Purported trade item: 'booze 27,900' but no intelligent life detected
AASRPEM: Spants not detected but units supposedly present.
ABAAAAB: Murderbots not detected but artifact supposedly present.
ABABYBE: Murderbots not detected but units supposedly present.
ABABYBE: Spants not detected but units supposedly present.
ABACADA: Purported trade item: 'medicine 24K' but hostile intelligent life detected
ABACADA: Murderbots not detected but units supposedly present.
ABACADA: Spants not detected but units supposedly present.
ABALONE: Murderbots not detected but artifact supposedly present.
ABCABCA: Murderbots not detected but artifact supposedly present.
ABCBCBA: Purported trade item: 'medicine 16.1k' but no intelligent life detected
ABCBCBA: Spants not detected but artifact supposedly present.
ABCDCBA: Murderbots not detected but units supposedly present.
ABCDCBA: Spants not detected but units supposedly present.
ABIGTIT: Purported trade item: 'mask (134K)' but no intelligent life detected
ABSCOND: Murderbots not detected but artifact supposedly present.
ADGJLMB: Murderbots not detected but units supposedly present.
ADGJLMB: Spants not detected but artifact supposedly present.
ADRAGON: Murderbots not detected but artifact supposedly present.
AELEVEN: Spants not detected but units supposedly present.
AFAIRYS: Spants not detected but units supposedly present.
AINCCLQ: Purported trade item: 'medicine 16.2k' but no intelligent life detected
AIRSHIP: Spants not detected but units supposedly present.
ALCOHOL: Spants not detected but units supposedly present.
ALPHAAZ: Spants not detected but units supposedly present.
ALVINNN: Murderbots not detected but units supposedly present.
AMAZONA: Murderbots not detected but units supposedly present.
ANALPAL: Murderbots not detected but units supposedly present.
ANALPAL: Spants not detected but units supposedly present.
ANGUISH: Murderbots not detected but artifact supposedly present.
ANORMAL: Spants not detected but units supposedly present.
ANTIFAS: Spants not detected but units supposedly present.
APOLOGY: Spants not detected but units supposedly present.
AQUJVPN: Murderbots not detected but artifact supposedly present.
ARABEST: Purported trade item: 'Medicine (18.8k)' but no intelligent life detected
ARAMADA: Murderbots not detected but units supposedly present.
ARCANUM: Spants not detected but units supposedly present.
ARRAKIS: Spants not detected but artifact supposedly present.
ARRRRRR: Spants not detected but units supposedly present.
ASDFGHJ: Murderbots not detected but units supposedly present.
ASSBUTT: Murderbots not detected but units supposedly present.
ASSBUTT: Spants not detected but units supposedly present.
ASSWIPE: Murderbots not detected but units supposedly present.
ASSWIPE: Spants not detected but units supposedly present.
ATOYOTA: Purported trade item: 'medicine 26.9K' but no intelligent life detected
AVARICE: Murderbots not detected but artifact supposedly present.
AVARICE: Spants not detected but artifact supposedly present.
BABACNO: Murderbots not detected but units supposedly present.
BAGHDAD: Spants not detected but artifact supposedly present.
BARBARA: Murderbots detected but both an artifact and units supposedly present.
BARBARA: Spants detected but both an artifact and units supposedly present.
BARCODE: Murderbots detected but both an artifact and units supposedly present.
BARCODE: Spants not detected but artifact supposedly present.
BOSSBAT: Purported trade item: 'salad (23.3k)' but no intelligent life detected
CACBCDC: Spants not detected but artifact supposedly present.
DXAAAAA: Spants not detected but units supposedly present.
ENGLAND: Murderbots not detected but units supposedly present.
ESTONIA: Spants not detected but units supposedly present.
FAGGOTS: Spants not detected but units supposedly present.
FARTGAS: Spants detected but both an artifact and units supposedly present.
IMPETUS: Spants not detected but units supposedly present.
IOIIIOO: Murderbots not detected but units supposedly present.
KINGDOM: Murderbots not detected but artifact supposedly present.
KINGDOM: Spants not detected but artifact supposedly present.
LEGOLAS: Murderbots not detected but units supposedly present.
LIBERTY: Spants not detected but units supposedly present.
MISFITS: Spants not detected but units supposedly present.
Invalid coordinates: N*****S
NEPTUNE: Purported trade item: ' ' but hostile intelligent life detected
NONBIER: Purported trade item: 'Salad' but hostile intelligent life detected
NONBIER: Spants not detected but units supposedly present.
OBNOXIA: Murderbots detected but both an artifact and units supposedly present.
OBSIDIA: Purported trade item: 'booze 16k' but no intelligent life detected
Invalid coordinates: PANGEA
PEACHES: Spants not detected but units supposedly present.
QBQBQBQ: Murderbots not detected but units supposedly present.
RAMONES: Murderbots not detected but artifact supposedly present.
SCIENCE: Purported trade item: 'medicine, 26,900' but no intelligent life detected
SEXDOLL: Spants not detected but units supposedly present.
SKHQWKL: Purported trade item: ' ' but no intelligent life detected
SOPRANO: Murderbots not detected but artifact supposedly present.
TATGHSG: Murderbots not detected but units supposedly present.
TATGHSG: Spants not detected but artifact supposedly present.
TATGHSH: Spants not detected but units supposedly present.
TELEFON: Spants not detected but units supposedly present.
THIRTYG: Spants not detected but artifact supposedly present.
TJSYRJS: Murderbots not detected but artifact supposedly present.
TJSYRJS: Spants not detected but artifact supposedly present.
VOLCANO: Purported trade item: 'medicine (27.5k)' but no intelligent life detected
WEEABOO: Murderbots not detected but units supposedly present.
WEIRDAL: Purported trade item: 'salad (30.0k)' but no intelligent life detected
WHATTHE: Spants detected but both an artifact and units supposedly present.
WILDMAN: Murderbots not detected but units supposedly present.
WILDMAN: Spants not detected but units supposedly present.
XFRYLWS: Murderbots not detected but units supposedly present.
XYZABCD: Spants not detected but units supposedly present.
YZABCDE: Murderbots not detected but units supposedly present.
YZABCDE: Spants not detected but units supposedly present.
ZAAAEUN: Spants not detected but artifact supposedly present.
ZETHREE: Spants not detected but units supposedly present.
ZFATTIE: Spants not detected but units supposedly present.
ZGUESSS: Spants not detected but units supposedly present.
ZUUUUUU: Spants not detected but units supposedly present.
ZWINTER: Spants not detected but units supposedly present.[/color]

Writing Spacegate planet data to SpacegatePlanetsPublic.txt
Writing Spacegate planet data to SpacegatePlanetsPublicCompact.txt
Aside from the invalid coordinates, everything else is conflicting data where I can't necessarily decide what to believe. So I do this:

- If the aliens are "hostile" (or not present) and a trade item is listed, I set aliens as "detected" and list no trade item.
- If there is a Spant or Murderbot non-combat, but drones or soldiers are present, I simply say "detected".
- If Spants or Murderbots are NOT listed as present, but there are units (or an artifact). simply say "detected"

Other choices are possible. For example, if there is a trade item, set the aliens as "friendly".
But, setting to "detected" basically says "details are unconfirmed. Go check if you are interested".

Revision 125
 
I've actually made quite a bit of progress on this, although there is a LOT to take account of.
For example, I can search for one goal or a primary and secondary goal.

A few abbreviated examples:

Code:
[color=green]> ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_PLANTS ).count()[/color]

Returned: 45

> [color=green]ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_ANIMALS ).count()[/color]

Returned: 44

> [color=green]ash import <VeracitySpacegate.ash>; planets_for_goals( GOAL_PLANTS, GOAL_ANIMALS ).count()[/color]

Returned: 1
There are 45 planets with Hostile Anomalous Plants.
There are 44 planets with Hostile Anomalous Animals
There is 1 (known) planet with both.

I have verified the planet with both, and am gratified that it exists, since for the longest time, there was no example of a planet with both, although I posited it must exist although the Wiki knows nothing of it.

One of the (many) things to work out is this:

Code:
[color=green]> ash import <VeracitySpacegate.ash>; planets_for_goal( GOAL_ALL_ROCKS ).count()[/color]

Returned: 20
That's nice. If you want to maximize your research with a geological sample kit, you have 20 planets - of divers difficulty level - to choose from.

A tricky problem is when you have a primary goal of "Anomalous Plants" or "Space Pirate quest step 2" - and you'd like to maximize rocks (for research) as your secondary goal. Which means, minimize other kinds of life - animals, plants, murderbots, spants, aliens. Don't have that coded yet. But it's coming.

Hoping to get all that worked out, as well as the configuration options and the command line by the end of the upcoming long weekend, when I have lots of vacation days. That will allow you to run the script and say "maximize for X and Y, maximum difficulty Z, which planet should I go to?" Or "I want a random planet from K-P. Suggest one?"

The actual "OK, given that, automate for 20 turns and save the results" comes later.

My one question is this:

I have no settings to record types of Rocks you can find. You can choose to not spend a turn in the Caves - so if you want to minimize total turns spent while looking for a particular quest step, say, you might prefer that. But is there really a difference in rocks? The spreadsheet tends to display the result of exactly one run on the planet. If they happened to not get rock type A, does that really mean "you won't ever find rock type A", or is it an artifact of sample size 1?

I can certainly take 3 bits to determine which rock types appear. I wonder how that actually maps to KoL's planet model.

I have four multis who just bought Spacegate access. I expect that essentally all of them will go for "RANDOM" - within their capabilities - which means I'll be able to add more than 1400 new planets a year to the collective database. As hosted by this script. ;)

(The "what happened this run" will also include the following cosmetic things:

What the sky look like
What the sun(s) look like
What the moon(s) look like.
Which plant image
Which animal image
Which (hostile or friendly) alien image

Since those do not change for a given planet, they must be encoded in the 7-alphabetic-character worth of bits - but since they don't actually affect gameplay, they undoubtedly reuse bits used to encode game-affecting parameters.)
 
This is all pretty amazing. Blows away the script I made for playing these. I think all mine does is keep a record of any planet coordinates where it saw the word "anomalous" on the terminal page. In any event, you have rekindled my interest in the spacegate, which I quit playing some time ago. I am probably going to have to install this when I get a chance.
 
Here is the plan for command options and settings.

Code:
// commands:
//   automate				// Do whatever the settings say you should do
//   coordinates XXXXXXX		// Use specific coordinates
//   random [difficulty]		// Choose random coordinates
//   goal A [difficulty]		// Choose a planet with goal A and minimal other life forms
//   goal A, B [difficulty]		// Choose a planet with goals A and B and minimal other life forms
//
// optional difficulty:
//   (X)				// Difficulty level X only
//   (X-Y)				// Difficulty level betwen X and Y inclusive
//
// goals:
//   all rocks				// no lifeforms or ruins
//   plants				// hostile anomalous plants
//   animals				// hostile anomalous animals
//   murderbots [type]			// murderbot [artifact, drones, soldiers]
//   spants [type]			// spant [artifact, drones, soldiers]
//   friendly aliens [buy] [item]	// friendly aliens [food, booze, medicine, mask]
//   hostile aliens [item]		// hostile aliens [blowgun, loincloth, necklace, spear, totem]
//   space pirate [step]		// Space Pirate quest [1, 2, 3]
//   procrastinator [step]		// Procrastinator quest [1, 2, 3]
//   space baby [step]			// Space Baby quest [1, 2, 3]
//
// For spants and murderbots, [type] is optional. If omitted, will choose a planet with that lifeform "detected" but type not known.
// For aliens, [item] is optional. If omitted, will choose a plent with aliens "detected", but item not known
// For alien races, [step] is optional. If omitted, will detect where you are in that quest and do the appropriate step.
//
// Settings to control the above
//
//   VSG.Coordinates			// If valid coordinates, that specific planet.
//					// If RANDOM, a random planet within configured difficulty range
//					// Default is unset
//   VSG.Goal1				// (all rocks) Primary goal
//   VSG.Goal2				// Default is unset
//   VSG.BuyTradeItem			// Default is false
//   VSG.MinimumDifficulty		// (A) Easiest planet to visit
//   VSG.MaximumDifficulty		// (Z) Hardest planet to visit
//   VSG.MinimumSpacePirateLanguage	// (40) Minimum language proficiency to try for step 2
//   VSG.MinimumProcrastinatorLanguage	// (60) Minimum language proficiency to try for step 2
//   VSG.MinimumSpaceBabyLanguage	// (50) Minimum language proficiency to try for step 2
Obviously, if you specify a difficulty (or range) we may not be able to satisfy even one goal, much less two.
There are so many planets, it seems likely that all combinations exist for every difficulty, but our library of planets is tiny, given the vastness of space.
 
Last edited:
For grins, revision 128 includes my (very incomplete) VeracitySpacegate.ash.
It has the code I demoed above - where you can search for planets that match one or two goals - and get a list of them back.
This will all change a lot, even before I get to the "automate a planet, record everything, print it (and save to settings) at end of session" part.

So, don't count on anything - goals, data structures, functions - to remain unchanged, but it may amuse you in its present state.

If nothing else, it shows how I incrementally develop software without necessarily having it all designed up front. :)
 
Regarding the proposed commands, I have a refinement. There are two "prefix" commands:

automate - choose a planet based on parameters and visit it
suggest - choose a planet based on parameters and say what's known about

"automate" is the default and you can leave it off, unless there are no other parameters, where it does whatever current settings specify

---

automate - visit planets based on current settings
suggest - suggest a planet based on current settings and describe it

All other commands work as described above: they "automate" the specified planet.
If you precede them the "suggest", they generate a planet and describe it.

Suggest will be more verbose about how it chooses a planet and more forgiving of errors; nothing to abort, since it will not visit a planet.

So, something like this:

> VeracitySpacegate suggest goal spants, animals (K-N)

I know about 428 planets with Spants
Of those, 16 also have Hostile Anomalous Animals
Of those, 4 have difficulty between K and N
I suggest you visit LUBBOCK
Here's what I know about it:
... planet description...

Getting "suggest" planet-picking functionality by itself is a prerequisite to getting the "automate" functionality - and would be useful by itself.

I'll work towards releasing that soonish.

I really want the "automate" functionality since that will add new planets to SpacegatePlanetsMine.txt, where they can augment the database.
Of course, that part only applies to visiting unknown (or RANDOM) planets - or previously know planets from the spreadsheet with incomplete info.

Edit: And considering that I sequentially trim lists of planets based on goals, I see no reason that there need be only two goals. Heck, if you want "spent artifact" and "murderbot artifact" and "procrastinator 1" and "friendly aliens", by all means - see if such a planet is known.
 
Last edited:
Since I had nothing better to do today, I finished up all the "suggest a planet" stuff.

Code:
[color=green]> VeracitySpacegate help[/color]

Available commands:

help - print this message

suggest [parameters] - select a planet to visit
visit [parameters] - select a planet to vist and go there
automate [parameters] - (same as visit)

If you do not specify parameters, the script will use current settings to control selection

Available parameters:

coordinates XXXXXXX - go to the coordinates you specified
random [difficulty] - go to a random planet, as restrained by the difficulty you chose
goal A [, B]... [difficulty] - go to a planet that satisfies all the goals you selected

Difficulty is always optional; if not selected, script settings will determine it. It defauls to (A-Z)

(X) - difficulty is exactly X
(X-Y) - difficulty is between X and Y, inclusive

Available goals:

rocks - If this is the only goal, will find a planet with all rocks.
plants - Hostile Anomalous plants
animals - Hostile Anomalous animals
trade [buy] [item] - friendly aliens selling the (optiona) item. Will find cheapest, if you want to 'buy'
(item is one of salad, booze, medicine, mask)
trophy [item] - hostile aliens wielding the (optional) equipment
(item is one of blowgun, loincloth, necklace, spear, totem)
murderbots [type] - Murderbots (optionally) with artifact, drones, or soldiers
spants [type] - Spants (optionally) with artifact, drones, or soldiers
ruins - any unidentified ruins
procrastinator [step] - the next (or specified) step in the Procrastinator quest
space baby [step] - the next (or specified) step in the Space Baby quest
space pirate [step] - the next (or specified) step in the Space Pirate quest

For spants and murderbots, [type] is optional. If omitted, chooses planet with life 'detected' but type not known.
For aliens, [item] is optional. If omitted, chooses plent with life 'detected', but item not known

Available script settings:

VSG.Coordinates - coordinates or RANDOM
VSG.Goals - set of goals. default is 'rocks'
VSG.BuyTradeItem - true or false
VSG.MinimumDifficulty - Easiest planet to visit. Default is A
VSG.MaximumDifficulty - Hardest planet to visit. Default is Z
VSG.MinimumProcrastinatorLanguage - Minimum language fluency to try for step 2. Default is 60
VSG.MinimumSpaceBabyLanguage - Minimum language fluency to try for step 2. Default is 50
VSG.MinimumSpacePirateLanguage - Minimum language fluency to try for step 2. Default is 40
Parsing that makes me wish I had a command line parsing library. :)

Code:
[color=green]> VeracitySpacegate goals murderbots, spants (E-K)[/color]

Considering 1541 known planets.
After filtering on 'murderbots', 566 left.
After filtering on 'spants', 227 left.
After filtering on planet difficulty (E-K), 25 left.
After filtering for fewest additional combat encounters, 8 left.
After filtering for fewest additional noncombat encounters, 5 left.

I suggest that you visit the planet at coordinates JUSTINA
Here's what I know about that planet:

Planet Name: Zeta Fredfordus VI (difficulty = 9)
Coordinates: JUSTINA

Environmental Hazards:
  toxic atmosphere
  magnetic storms
Elemental Hazards:
  hot solar flares
Plant Life: none detected
Animal Life: none detected
Intelligent Life: detected (hostile) (unknown alien trophy}
DANGER: Spant chemical signatures detected
DANGER: Murderbot frequencies detected
We log all the filtering stages.

At the end, it chooses the hardest planet remaining, since that is likely to have more valuable rocks.
(I originally had it go for a random planet, but why?)

Code:
[color=green]> VeracitySpacegate goals rocks[/color]

Considering 1541 known planets.
After filtering on 'rocks', 20 left.
After filtering for fewest additional combat encounters, 20 left.
After filtering for fewest additional noncombat encounters, 20 left.

I suggest that you visit the planet at coordinates ZZZZZZQ
Here's what I know about that planet:

Planet Name: Abbrevianus Waldorf I (difficulty = 25)
Coordinates: ZZZZZZQ

Environmental Hazards:
  high gravity
  irradiated
  magnetic storms
Elemental Hazards:
  frigid zones
  scary noises
  nasty gasses
Plant Life: none detected
Animal Life: none detected
Intelligent Life: none detected
Not all filtering is useful.

Code:
[color=green]> VeracitySpacegate goals space baby[/color]

Considering 1541 known planets.
After filtering on 'space baby 1', 83 left.
After filtering for fewest additional combat encounters, 3 left.
After filtering for fewest additional noncombat encounters, 3 left.

I suggest that you visit the planet at coordinates ZIWTWNB
Here's what I know about that planet:

Planet Name: Phi Trixrabbitus II (difficulty = 25)
Coordinates: ZIWTWNB

Environmental Hazards:
  high gravity
  irradiated
  high winds
Elemental Hazards:
  hot solar flares
  scary noises
  lewd rock formations
Plant Life: none detected
Animal Life: none detected
Intelligent Life: none detected
ALERT: ANCIENT RUINS DETECTED (Space Baby 1: Time Enough at Last)
It looked at my inventory and language fluency settings and figured out where I needed to go in the Space Baby quest.

Code:
[color=green]> VeracitySpacegate goals trade buy salad (F-O)[/color]

Considering 1541 known planets.
After filtering on 'trade salad', 37 left.
After filtering on planet difficulty (F-O), 16 left.
After filtering for cheapest trade item (primitive alien salad @ 14,200 Meat), 1 left.

I suggest that you visit the planet at coordinates NEWYORK
Here's what I know about that planet:

Planet Name: Zeta Salisbury IV (difficulty = 13)
Coordinates: NEWYORK

Environmental Hazards:
  irradiated
  high winds
Elemental Hazards:
  nasty gasses
Plant Life: none detected
Animal Life: none detected
Intelligent Life: detected (primitive alien salad @ 14,200 Meat}
DANGER: Spant chemical signatures detected (drones and soldiers)
If you are looking for a trade item and actually want to buy it, it will find the cheapest price.

Code:
[color=green]> VeracitySpacegate random (F-K)[/color]

RANDOM coordinates with difficulty (F-K) -> FMJQGOD

I suggest that you visit the planet at coordinates FMJQGOD
I know nothing about that planet. Go forth and explore it. Have fun, but be careful!
We generate our own random planet coordinates, rather than depending on KoL - which doesn't let you specify difficulty ranges, like that.

I think this is everything I need for the planet database and choosing a planet to visit based on your goals.

Next up will be actually visiting the planet, watching everything, and saving planet parameters in SpacegatePlanetsMine.txt.

Comments and suggestions welcome.
 
Code:
[COLOR=olive]> VeracitySpacegate goals animals, plants (K-Z)[/COLOR]

Considering     1541 known planets.
After filtering on 'animals', 44 left.
After     filtering on 'plants', 1 left.
After filtering on planet difficulty     (K-Z), 0 left.
I'm sorry. I don't know any planets that satisfy all of     your requirements

I installed it and ran the above. Pretty sweet. I can deduce there is a planet with difficulty less than 'K' that has both plants and animals? I'm curious - the database is only built up by your 4 characters (and the spreadsheet)? New planet data accumulated by other players just remains in their personal data files? ie...is there any way to implement data-sharing so that the script would build its database faster? I suspect not or other scripts would probably have deployed such by now. But you're such a wiz I couldn't put it past you :).

I suspect I will have more to say after I have a had a chance to play with it more. For now, I'll just say "Bravo".
 
The planet with both plants and animals is EGGBURT. I saw that on the spreadsheet and visited it for verification.

The state of the database is this:

1) The public spreadsheet, processed by SpacegateImport.ash (also released) is in SpacegatePlanetsPublic.txt
2) The planets that I have personally visited, entered and annotated by hand, are in SpacegatePlanetsVeracity.ash

When I say "by hand", I mean I have an ASH file with a hand-coded array of "planet" records which I map_to_file into that file. I attach that for your amusement, although I see no need to release it via svn.

So far, my multis have been doing things like testing the quests (Procrastinator,, etc.),verifying planets like EGGBURT,, and visiting (once) all the planets that are publicly announced as having rare drops from hostile aliens.

When I finish the "record everything you say while adventuring on a planet" part, the script will automatically do something similar: it will add a "planet" to the map of planets you, personally, have visited and will map_to_file it to SpacegatePlanetsMine.txt. As I mentioned, when my scripts load_planets(), they merge three files - SpacegatePlanetsPublic.txt, SpacegatePlanetsVeracity.txt, and SpacegatePlanetsMine.txt. The first contains "unverified" planets - many with incomplete info, because of all the data format errors reported by SpacegateImprt.ash. The latter two are considered to be "verified" and will override planets from the "Public" data file.

Once I get the automatic discovery stuff working, I will copy my Veracity file to my Mine file and all of my multis will add to that. Periodically, I will copy it back to Veracity and release it, so that all users of this script will have my data available.

Note that everybody will still have their own Mine file - and those can be shared, as well, by simply concatenating multiple Mine files into one.

A thing I haven't figured out is how to easily add in knowledge about the rare hostile alien trophies. Most everybody who visits a planet will not see such - but the person who gets one will have it notated in their Mine file. Perhaps a program which will do the "concatenation" of somebody else's Mine file into yours and will compare planets that it merges in, reporting on differences (like the trophies)?

I also want to collect the "cosmetic" planet info and save it in, perhaps, a parallel file: SpacegatePlanetCosmetics.txt, say. This will also be indexed by coordinates, but will have:

Planet name
Planet sky
Planet sun
Planet moons
Planet animal image
Planet plant image
Planet alien image

These are all things that have no effect on gameplay. Only the name is in the public spreadsheet - which is why I have that in my planet data structure, even though it is cosmetic; I wanted to import it. Hmm. Perhaps I should move it to the planet_cosmetics structure and have SpacegateImport .ash write to both files, thus keeping the "game affecting" data and the "cosmetic" data separated? I think I'll do that. The public "cosmetics" file will - like the planet data - be incomplete.

The sky, suns, and moons are described when you first step onto a planet:

The sky is a dim red, punctuated by mottled pale blue and pink clouds. It is twilight -- the planet's sun is just out of sight. There are no moons visible.
The sky above the horizon is a deep blue, speckled with puffy grey clouds. The planet's sun (if it has one) is nowhere to be seen. There are no moons visible.
The sky is blue fading into orange near the horizon. The system's twin white suns loom above you. The planet doesn't appear to have any satellites.
The planet's sky is a deep green, dominated by a system of pale blue rings. The landscape is lit by a brilliant white sun. Several waning moons pepper the planet's ecliptic plane.
The sky is a bleached orange. The system's single, distant sun hangs dimly near the horizon. The sky is moonless.
The sky is yellow fading into blue near the horizon. A bright yellow, almost Sol-like sun hangs overhead. A single massive moon dominates the dome of the sky.
The planet's sky is a pale green, dominated by a system of white rings. The system's twin blue suns loom above you. Two gaseous moons punctuate the sky.

And so on. Always three sentences. I'm curious about what the choices are for each.

Certainly not something to make decisions on for visiting a planet, but will augment my "planet description" to include that extra info - much as I do with kinds of spants, trade item and price, and so on.

I spend most of yesterday coding. I'll come up with a plan for completing the "visit" part of the script and perhaps I'll start on that on Sunday; I have a lot of things I need to do today and tomorrow.
 

Attachments

I did that. I quite like this:

Code:
[color=green]> VeracitySpacegate rocks[/color]

Considering 1542 known planets.
After filtering on 'rocks', 20 left.
After filtering for fewest additional combat encounters, 20 left.
After filtering for fewest additional noncombat encounters, 20 left.

I suggest that you visit the planet at coordinates ZZZZZZQ
Here's what I know about that planet:

Planet Name: Abbrevianus Waldorf I (difficulty = 25)
Coordinates: ZZZZZZQ

The sky is red fading into yellow near the horizon, speckled with puffy ecru-colored clouds.
The landscape is lit by an incredibly close white sun.
A gibbous moon hangs above the horizon.

Environmental Hazards:
  high gravity
  irradiated
  magnetic storms
Elemental Hazards:
  frigid zones
  scary noises
  nasty gasses
Plant Life: none detected
Animal Life: none detected
Intelligent Life: none detected
Also notice that you need not use the command "goals"; if you omit it, it tries to intrpret your command as goals.
 
Revision 140 makes SpacegateExplorer and VeracitySpacegate upper-case user-supplied coordinates before looking up the planet.
 
I was looking over your plan for visit_spacegate() and I was curious how you intend to handle the gear. I believe I had my script run a maximize command with appropriate "+equip" parameters for the needed "requisition" gear, as well as resistance parameters based on the elemental hazards. It seemed to me that elemental resistance did help in reducing the damage from those hazards to more manageable levels....but I could be mistaken. I see that you've listed a "Spacegate" outfit as a requirement, but the outfit would would likely need to change for each planet (unless one were playing the same planet repeatedly, I guess). Just curious how you envision that part working.
 
I was looking over your plan for visit_spacegate() and I was curious how you intend to handle the gear. I believe I had my script run a maximize command with appropriate "+equip" parameters for the needed "requisition" gear, as well as resistance parameters based on the elemental hazards. It seemed to me that elemental resistance did help in reducing the damage from those hazards to more manageable levels....but I could be mistaken. I see that you've listed a "Spacegate" outfit as a requirement, but the outfit would would likely need to change for each planet (unless one were playing the same planet repeatedly, I guess). Just curious how you envision that part working.
Haven't completely thought that through. Here are some observations based on manually doing Spacegate with four multis for the last few weeks:

They are all high level:

Level 74 (unascended) Accordion Thief
Level 76 (30 ascensions) Sauceror
Level 68 (unascended) Accordion Thief
Level 75 (38 ascension) Pastamancer

The unascended characters have no healing and no mass-damage abilities, short of items, that I have figured out. After struggling at Z difficulty, I've begun restricting them to M difficulty. I should experiment more and come up with a cost-effective way for them to do higher difficulties.
The others can handle Z with their spells.

Regarding elemental damage, it all happens at the end of the encounter: you take a choice and sometimes get damage, or you finish a fight (win or lose) and sometimes get more damage. The only effect of not surviving the extra damage is that you are beaten up, in addition to being at zero HP.
Interestingly, if you have (something) which regenerates at least one HP at the end of each encounter, if you do a planet with all non-combats, you don't need to heal; you can adventure perfectly well Beaten Up with a single HP. Obviously, you'll need to heal after you are done if you want to adventure somewhere else.

Regarding what to maximize for, I'd be inclined to go for Item Drop (if you will be facing combats), with +equip for each needed item, including your selected sample kit (geological, unless I make that configurable. The others seem sort of pointless, since "fascinating" samples are not worth that much, and you'll get at most 5 or 6 of them).

When I finish the initial "visit" functionality, I'll update VeracityMeatFarm to optionally call it with the command of your choice - and it'll equip your item-drop familiar for doing that. And I'll set my four multis loose to visit an (appropriate level) RANDOM planet every day...

Yeah, you've convinced me that "maximizing" appropriate gear is better than having an outfit and randomly losing this or that piece of equipment depending on the hazards.

You've also reminded me that if I am going to run each encounter via visit_url, so I can examine the encounter, log it, decide which choice to use, etc., that I have to manually invoke healing - or not - between each encounter - and the "all rocks" case requires only the meagerest healing.

Huh. Ezandora's script does this:

Code:
		//Only restore one HP if it's just rocks:
		int hp_desired = 1;
		if (state.plant_life != "none detected" || state.animal_life != "none detected" || state.intelligent_life != "none detected")
			hp_desired = my_maxhp();
		//So... if all of those are none, what happens with spant/murderbots? Do you encounter fights? I don't think so?
		if (my_hp() < hp_desired)
			restore_hp(hp_desired);
She doesn't account for Spants and Murderbots (she is wrong that you can't get combats without another kind of life present), and she's not looking at whether the other kinds of life are hostile or not. But I agree with the "only need 1 HP" observation.
 
(I notice that a shark jumper gives passive HP regeneration as well as +3 resistance to all elements. Not a bad use for the shirt slot...)
 
OK. I am thinking this:

If you have a "Spacegate" outfit, use it - understanding that this or that slots will be overridden by required environmental hazard equipment. You want a two-handed murderbot plasma rifle to autokill spants - even though it precludes a sample kit? Almost certainly a mistake, but it's YOUR mistake, and I will not second guess you.
Otherwise, maximize on Item Drop, with +equip specified for each required environmental hazard item, as well as the (configured?) off-hand sample kit.
There will be a parameter for additional "maximize" parameters - which will allow my characters to specify a shark jumper, say, to provide passive HP regen. Or anybody else to specify any other item they might always want.

I think I will ignore elemental damage. It either beats you up - in which case healing to 1 (or max) will do everything necessary - or it doesn't beat you up - and healing to max is what you will need. Which is to say, I don't see it as something that changes strategy.
 
Back
Top