This blog has been somewhat controversial in some circles, to utilize classic understatement. This isn’t going to be a rant, because A, rants aren’t productive, B, there have been enough already, C, I see where it’s supposed to be going. Or at least I think I do.
Rorqual changes:
These have been coming for a long time. They need to happen. Yes, they’re painful for those who have invested in a rorqual mining fleet. How much have those people made off the rorqual fleet they have? If they haven’t at least made it back by now, they either timed it really badly, or they’re fibbing. They need to happen, because the rorqual fleets hovering up the ore in the universe (and building titan fleets) was the main thing which prompted the start of scarcity. It was never going to go back to the way it was. Should they mine a bit more? I could see that. Should they out mine a hulk? I would say nope. At best a Mack. (which is the high ore hold exhumer. not the high yield one.)
It might be worth thinking about reducing the volume of moon ore, to boost its mining rate, without boosting the rate for regular ores. That way you’re not messing with the production of moon goo as much.
Orca change (and Porpoise)
Pretty much inherent in the Rorq change. These are no longer solo mining ships. They’re Mining boosting ships, which can do a little mining on the side.
Oh, and the porpoise needs a bigger cargo hold, because of:
Compression
Good idea, needs some tweaking. Waste is there to cause choices. (Who remembers the days of compressing with 425mm rails?) Takes too long for some types, should be able to load from a specialist hold. Even if that load is drag and drop. Or better, should be able to be cycled, and use ore like fuel. so you don’t need to load it at all. (problem here is, nothing which uses fuel has outcomes depending on what the ‘fuel’ is. Maybe ammo which determines fuel types or something?) Just a thought.
Waste
To blatantly steal something from someone on the forums, rename this to Tailings. and make damn sure you don’t use the verb waste anywhere, because it feels terrible. you didn’t ‘mined X units and wasted Y units’, you ‘mined X units, with Y units of tailings.’ Even if you leave it as waste, ‘mined x units with y units of waste’ feels better than being told you ‘wasted units’. Yes, it’s just a slight rewording, but it’s an important one. People are emotional creatures. The meaning is the same, but the impact is different.
Also, change the order of operations, so you get your ore first, _then_ the waste is removed from the asteroid. That way, you don’t take away ore from people. They always get what’s left in the asteroid at the end.
Oh, and add a mining boost which reduces waste. Maybe add it to the effect with the crystal preservation? probably on percentage chance rather than multiplier, but both would be interesting. Percentage multiplication of the waste percentage. so a 50% bonus would be 50% for T1, and 17% for T2. (more effect for T1)
Gas huffing
Keep this on the smaller ships. Boost it on the barges.
Barges
Don’t see why the changes in tank and fitting were done to the skiff/procurer. Shield tank makes sense there, and hacking off a sixth of the shield hp and sticking it on armour doesn’t make a lot of sense to me. I do like the higher BW though 😉
I don’t expect CCP to change anything major with what they’re doing. I’ve been at this too long to this. But there’s always space for tweaks, and those can be pretty major
And there is more coming. The dynamic distribution.
I may have more thoughts in future, but this is it for now. I have a nagging feeling I’ve forgotten things.
How many parts is something I can’t yet answer. As many as it takes.
The SDE is a Static Data Extract from Eve Online. It contains information like where stars and planets are, how much Tritanium goes into a Typhoon, what skills are needed for which modules and so on. It’s a useful bag of information if you’re going to be doing any development of third party tools for the game. Much (but not all) of the information is also available directly from ESI, where it’s potentially more up to data. However, it can be a lot more time consuming to process there, and some is just not available. Like what blueprints need.
The official SDE direct from CCP
I’m not going to go into a great deal of depth on this. It’s not what most people use.
This is the main source for the SDE, and what I use to create my own versions. The main reason most people don’t use is, is that it’s a fuckton (metric, not imperial) of yaml files. Great for passing data around, not so good for looking up something.
CCP tend to update this a wee while after a release happens. Sometimes they need poked to do it. If you’re going to work directly from it, be aware that not all yaml parsers are created equal and can handle the spec a little differently. pyYAML is probably the one to use if you can, with libyaml to stop it taking forever.
The SDE release from yours truly
For a little history, CCP used to release the SDE as a MS SQL server dump. When I got started, someone else did the conversions to mysql which I used. Then they got slower and slower, and I got impatient, finally working out how to do it myself. A few years later, CCP started converting how they did their data versioning internally, moving from what they called BSD to FSD. Which meant they moved to yaml files for much of it. At this point, I totally rewrote the converter process I was using. And because I could, I set it to target a number of different database. If I get hit by a bus, you can find it at https://github.com/fuzzysteve/yamlloader It’s python 2.7, but should be simple enough to convert to 3 if you want to.
https://www.fuzzwork.co.uk/dump/ is where I keep the conversions. I don’t promise to keep them for all time, but older versions are available if you want them. the latest version is always in the latest folder or linked to with the latest links in the root.
If you’re wondering about the structure and names, most of that is a hold over from the original SDE, so that applications needed minimal changes.
Available are:
MySQL, both a complete dump, and individual tables
SQLite, a complete database file.
Postgresql, pg_dump file for use with pg_restore
the normal one, which puts all the tables into the public schema
the ‘schema’ one, which puts all the tables into the evesde schema. I recommend this one for people starting out with postgres. Easier to update.
MS SQL server, a Data Tier Application export.
CSV files, now in gzip, bzip2, and plain format.
The Tables (In my conversion)
There are many tables (or CSV files) in the Eve SDE. However, these tend to fall into a small number of groups only a few of which are wanted.
The ‘Stuff’ tables
invTypes
This is the core table for many applications. If you have something which isn’t a unique item, then this is probably where you’ll want to look it up. Have a typeID from ESI which you want to look up? This is that table. Skills, ships, trade goods, generic planet types, all that good stuff. There’s a published column here which basically says whether it’s actively in the game or not.
invGroups and invCategories
invTypes has a groupID column. That links to invGroups, which has a categoryID which links to invCategories. invCategories contains a list of the types of stuff which exist. Like Ships, Skills, Planets, Modules, and so on. invGroups breaks that down further to things like Assault Frigates, Battleships, Science Skills, Asteroids and so on.
Example: you want all the ships in the game. you look up invCategories and find that ships are categoryID 6 (rather than always joining in the invCategories table.)
select typeName from invTypes join invGroups on invTypes.groupID=invGroups.groupID and invGroups.categoryID=6;
invMarketGroups
Much like invGroups, invMarketGroups is referred to by marketGroupID in invTypes. a little complexity is added, because each market group can have a parentMarketGroupID. This is so you can have each assault frigate in a market group for their race, that market group in the assault frigates group, that market group in advanced frigates, that in Frigates, and that in Ships. (ships doesn’t have a parent). Getting the full tree in pure SQL is a complete pain in the ass.
invMetaGroups and invMetaTypes
invMetaGroups defines the various meta level groups. Like tech 1, tech 2, faction and so on. invMetaTypes links that back to invTypes so you can list all the T2 ships by joining it in. It also has the parentTypeID in case you want to see what the T1 version is.
select typeName from invTypes join invGroups on invTypes.groupID=invGroups.groupID and invGroups.categoryID=6 join invMetaTypes on invTypes.typeID=invMetaTypes.typeID and invMetaTypes.metaGroupID=2
invTraits
All those handy ship bonuses have to live somewhere. Links to invTypes for the ship type (typeID) and to invTypes for the skill (skillID). -1 is a bonus which isn’t related to a skill. unitID links to eveUnits so you know if it’s a percentage or what.
invFlags
This is related to the asset table in Eve. If you get back a list of your assets, they’ll have flags on them. You won’t see hangars and so on. The Flags determine where they are. Something with flag 11 is in the first lowslot on a ship, for example. This is why shared hangars are painful to implement.
invTypeMaterials
This _used_ to be used for making things. It’s not any more. it’s just what you get out of something when you recycle it. typeID links to invTypes for what you’re recycling, materialTypeID links to invTypes and is what you get out. quantity is what you’d get on a perfect (100%) refine.
invVolumes
When things change size as they’re packaged, the volume in invTypes becomes less useful. This is the volume of things which are packaged (when it’s different)
invItems
A table of unique items, where they are, who owns them and what they are. I don’t think I’ve ever seen anyone but CCP use this.
invNames and invUniqueNames
the names for the things in invItems. Don’t know what kind of something a thing is, but have an itemID? It might be in there. There’s almost always a better table to look at to get this information, because you normally know.
invPositions
Where the things in invItems are in space. like with invNames, it’s unlikely you’ll want to use this.
Industry Tables
When Crius came out, CCP changed up everything. And had a new yaml data file just for making shit. So I created a number of totally new tables from it. If you don’t like the format, it’s all my fault. Try and do better. I dare you.
A common column in these tables is the activityID column. This is to split them up into the various things you can do with a blueprint. Like manufacturing, researching TE, copying, reacting, inventing and so on. Yes, reactions are just blueprints like anything else now.
1
Manufacturing
3
Researching Time Efficiency
4
Researching Material Efficiency
5
Copying
8
Invention
11
Reactions
The Activity IDs
industryActivity
typeID is the blueprint typeid in invTypes. time is how long it takes to do that activity before modifiers.
industryActivityMaterials
Which materialTypeIDs from invTypes are used for an activityID when using a typeID (blueprint) from invTypes and the quantity before modifiers
industryActivityProducts
What quantity of productTypeIDs from invTypes are produced per run of a typeID (blueprint) from invTypes for a specific activityID
industryActivitySkills
What skillID from invTypes is required to do activityID on a typeID (blueprint) from invTypes and what level it needs to be.
industryActivityProbabilities
Invention has different probability depending on the typeID of the blueprint (invTypes) with a handy productTypeID to work out what it makes.
industryBlueprints
maxProductionLimit is how many blueprint copies can be on a BPC.
Planetary Interaction.
planetSchematics
The various things you can make on a planet and how long they take.
planetSchematicsPinMap
Just links the schematics to the kind of structure on planet which makes them. Like basic industry. though it is by planet type as well.
planetSchematicsTypeMap
Takes the schematicID from planetSchematics, and tells you the quantity of what typeIDs you need to put in (isInput=1) to get typeID out (isInput=0)
The Dogma Tables
Dogma is Eve’s engine for knowing stuff about things. What slot does a module go into? Dogma. What skills are required for something? Dogma. How much damage does a gun do? Dogma (though it’s hard to work out. yay)
dgmAttributeTypes
The table with the description of the various dogma Attributes. by attributeID
dgmTypeAttributes
The table which links dogma attributes attributeID to item types invTypes typeid. These days, just use valueFloat for the value. everything is condensed into that now. Handy for things like how many low slots something has. Or which skills are required. (with a separate attribute for which level it’s needed at. yay)
To see all the attributes and what they do, for a Rifter (typeid 587) try:
select * from dgmTypeAttributes join dgmAttributeTypes on dgmTypeAttributes.attributeID=dgmAttributeTypes.attributeID where typeID=587;
dgmEffects
The various bits of dogma which are just flags on items, rather than things with values. like if it’s a low slot module or not. This describes those flags.
dgmTypeEffects
Linking typeID from invTypes to effectID in dgmEffects
dgmAttributeCategories
Just splits the various attributes up into categories. Like if it’s a fitting attribute, shield, or so on. categoryID in dgmAttributeTypes
dgmExpressions
This is stuff which relates to how things actually work in eve. the code behind it. I don’t understand it well enough to explain it.
Map Tables
mapDenormalize
This has pretty much every celestial in it, and where it is, in meters, in its star system, with the star at 0,0,0
Links to invTypes so you know what some is (planet etc) by typeID and invGroups by groupID. links to mapSolarSystems with solarSystemID, mapConstellations with constellationIDmapRegions with regionID.
What might not be obvious is wormhole effects are here, with a groupid of secondary sun.
mapJumps
Less useful than it might sound, it tells you which pairs of stargates link up. You probably want mapSolarSystemJumps
mapSolarSystemJumps
what solarSystemIDs have stargates to what other solarSystemIDs. also has regions and constellations
mapSolarSystems
So you can find out information about solarsystems by solarSystemID. Names, regionIDs, ConstellationIDs, where they are in the universe in meters. (yes, light year ranges stored in meters) and their security rating.
mapRegions
Simiar information, but for Regions.
mapConstellations
Take a wild guess 😉
The end, for now
There are still a bunch of tables which I’ve not talked about yet. Most are pretty self explanatory, but I’ll get to them another time. This should be enough to get you going.
Both of these will probably go away when the full release is out, as the main versions will be updated.
https://www.fuzzwork.co.uk/discord – A link to get an invite to my brand spanking new discord server. Just make sure to get some roles from the acl-management channel 😉 Mostly an experiment to see if anyone will actually use it.
The voting for CSM 15 starts on June 1st, 2020. Please remember to vote during the time that it’s open. If you think “I won’t vote, because it’s all just null blocs who get in”, you’re contributing to that (unless you’d just be voting for null bloc people 😉 ) Maybe you won’t get the people you want, but at least you tried? And it’s possible for non Bloc members to get in. I did. For six years.
No, I’m not running this year. It’s been six years. I think I deserve a rest from it, no?
Onto the candidates:
The Alumni:
We have a few people coming back. I’d suggest you think about these ones. (Not saying the others are bad, but they generally wouldn’t need your support.)
Mike Azariah– I’ve worked with him before. He’s a bit of an institution (should be institutionalized? 😉 ) in highsec, running his Magic School Bus for newbies.
Brisc Rubal– But “Brisc is a Goon!” I hear you tell. That’s true, yes. If that’s a deal breaker for you, move on. If it’s not, he does actually listen, and he did bring stuff from non-Goons to CCP.
Exooki– He’s a somewhat polarizing figure right now. And can be accused of being a goon, due to the Initiative mercenaries thing. But he did a reasonable job talking to CCP about wormhole stuff. If you care about wormhole stuff, maybe keep him in mind. If you think wormholes (and/or potential Goons) should DIAF, then move on.
The Rest:
These folk haven’t been on the CSM before. There’s upsides and downsides to that. One of the downsides is that I won’t be there to see the hope die in their eyes when they see how the sausage factory really works. I kid. Mostly. I don’t really known these folks, so take any recommendations with a dose of salt. Do some research, if you can.
InsidiousSainthood– Small gang/Solo PVP advocate. While fleet combat is important, so’s the little stuff. You don’t want to have one destroy the other. Always handy for an alternate. Keep an eye on them for FW too.
January Valentine – Community type. Which can be handy, as part of the CSM job is keeping a finger on community sentiment. (There can be a bit of sentiment guidance too, but that’s entirely a personal decision. CSM members tend to have seen more of the reasoning behind things. Which is why there can be a degree of ‘white knighting’. It’s never been requested by CCP.)
Kenneth Feld – He seems to have his head screwed on when it comes to industry. As that’s one of the legs of Eve, it’s kind of important.
Pandora Singularity – I’ve met her, while she was organising Eve North. Which went without (from the outside at least) a hitch. More community connections, and generally a good egg.
Stitch Kaneland – If FW is your thing, maybe take a look here. FW’s been needing work for a fair time. Maybe CCP will finally be able to dedicate some time to it.
Conclusion
Now, just because I haven’t suggested someone, doesn’t mean they’re not worth voting for. While yes, I’m stuck at home at the moment like many of the rest of you, I can do my entire job from there. And it’s been hectic, and draining. My research has suffered because of this. A few of them reached out to me for an endorsement. They got a little more attention because of that. They didn’t all get it. I will have missed worthy candidates.
Either way, please vote. Put the person you want the most at the top, and then put people you’d still like to see below them. Those slots don’t cost you anything to use, after all.
The list above is in no particular order.
If you do more research on people, ignore anyone who promises you anything, other than that they’ll talk to CCP. the CSM can’t make CCP do anything. Those people have no understanding of how the CSM works.
Oh god. 12 votes. That’s the margin I had, avoiding elimination. Thanks to everyone who voted for me 🙂 Your votes made the difference. (Obviously this is true every time, as if no-one voted for me, I wouldn’t get elected. But you can see the difference a little more clearly this time)
Now, I’m not huge on Analysis for this kind of thing, but the closeness had me thinking. So I reran the ballot a few times, eliminting each elected candidate. Just to see what happened:
Unmodified. (the number is the candidate number. Just an identifier, it means nothing) 8 “ExookiZ” 11 “Steve Ronuken” 17 “Vily” 19 “Olmeca Gold” 22 “Innominate” 27 “Gobbins” 29 “Dunk Dinkle” 30 “Merkelchen” 32 “Killah Bee” 34 “Aryth”
Second day edit: I have been duely informed by people that:
I’m correct
I’m wrong
I don’t know what I’m talking about
I got the order wrong
I should stay in my lane
The first paragraph was dickish. (not intended, but…)
So… You should probably just move on without reading.
This is just a minor modest proposal, for how a nullsec group can grow and prosper. Yes, I’ve never been in a nullsec group, but I’ve been watching from the outside, without any real prejudices holding me back. If you think I have nothing to offer, you can just close the tab now, and go about your day, safe in the knowledge that you showed me, and I’ll know my place now.
There’s a few stages to this, some of which have to happen in specific orders, others which can occur out of order (to a degree)
Stage 1:
Pick a capital system. Ideally this will be pretty central for you. A semi reasonable jump train to highsec is worthwhile, but not totally required. Depends how much you hate your logistics people. This could change in the future, but doing so could be quite painful. This will make more sense further down.
Once you have your capital system, you need to anchor at least a Fortizar in it. A Keepstar would be better, but I don’t know what scale you’re operating at. This structure should have A Market module in it. Other structure modules aren’t so important, though I’d suggest defences. Keep your market tax rate sane. Yes, you will get income from this, but you don’t want to make it make more sense to go elsewhere.
Stage 2:
Stock your market. Initially, this will likely be from Jita. This is bad. Jita is the enemy of your logistics chain. If you’re buying something from there, you’re giving ISK to the enemy (namely, someone not in your group)
This one sounds simple until you start getting into all the fiddly bits coming out of the simple premise that the only people you should be giving ISK to, are members of your own group.
You will want to have some subsidiary markets scattered around. These are not for your line members to buy ships and modules from. These are to cut down on the required movement of resources to make stuff. We’ll get to why this is good in a couple of paragraphs.
Stage 3
You’re going to need miners. You probably already have people in Rorquals. If you don’t, you want some. Or mining barges. Or both. Mine anomalies. Mine moons. Provide facilities for them to refine their ore, with a decently low tax rate, and appropriate rigs. Compressin is reasonable, if they’re towards the outside of your space.. You also want to provide them with somewhere to sell the ore or minerals at a fair rate. This can be below Jita, as it’s significantly more convenient for them. Do not scalp them. Taking advantage of your people is a good way to lose them. These can be at the subsidiary markets.
You’re going to need industrialists. Thankfully, you’re probably not going to need a huge number of them. And you can cheat, by teaching your line members to make things for you. Sure, they may not specialize, but if they can get researched blueprints at a low rate, and there are orders for them to sell to, you can effectively outsource bits of your manfacturing to them. You will want manufacturing structures in reasonable locations. This is why you want the subsiduary markets. So a general member doesn’t need to ship things around, to manufacture useful things.
Stage 4
Assuming you’re running a decent monitoring system on your members, you can start to have production goals people can sign up to. “We need 300 of module X”, allows people to sign up to do bits of that. Give corps/people who do useful things kudos, or other benefits. Remember that T2 needs T1 to feed it. And Components. And so on. Outsource from your primary industrialists to your line members. And Reactions are yet another thing that can be spread around. You need to watch for people selling resources outside, but this is a social aspect.
You want to be as self-sufficient as possible. If you have a doctrine, and you whelp a fleet, the appropriate response is to replace it from your stores. If it’s to go to Jita to buy another fleet, you’re playing into the hands of the people you’re fighting against.
Misc notes
The phases should probably be broken up more. But you can see how it all interlocks, and this is close to a stream of consiousness, rather than a properly set out plan.
Running a trade surplus is ok. But it tends to indicate that you can grow yourself more. Don’t give your spare capacity to your enemy.
You’re going to need ISK to make this work. Line members will need to be paid, to stop them selling their shit to your enemies.
You need to be able to have basic monitoring of your members. This means you’re going to be pretty dependent on your IT staff. Welcome to modern business. The basics of what you want to monitor:
What people are making. (Did Jimbob make a Dread recently?)
What stockpiles you have
What’s on your markets. (Is Jimbob selling a Dread on the market?)
What contracts exist (Is Jimbob selling it by contract instead?)
What ISK flow is happening. (Did Jimbob suddenly get a windfall?)
What your line members are mining. (are they refining it elsewhere? Selling in jita?)
what your mining happens near your structures.
Your enemies are everyone who are not you. This should be obvious.
None of this stuff is rocket science (though the monitoring system will take some effort. As will reporting on it) But all of it isn’t being implemented in too many places.
First off: The Judge is the beneficiary of Creecher’s disqualification. The results with him disqualified (so the ‘actual’ results. The number on the front is just an identifier. it doesn’t mean anything. I’m being lazy by not removing it.)
Going into the audit log, we find that Aryth and Sort Dragon each got enough votes to get elected without any transfer. First stage transfer from Aryth was enough to put Merkelchen over the edge. Not quite enough to get Innominate above quota, but pushing him into the top four.
It takes quite a few eliminations before it’s more than those 3 elected. Down to 23 candidates remaining, before minor transfer from Aryth and Merkelchen get Jin’taan over the edge. (it’s like 57 votes. He’s received enough transfer from eliminated candidates to get him there)
By the time we hit 18 remaining, Jin’s in the top 3 candidates, getting elected without any transfer.
Down to 16 and Killah Bee is above quota after transfer from Sort Dragon.
Down to 13 candidates, and I get on by transfer and elimination. I pick up a few from people who voted for everyone above me.
Down to 12, and I have enough to get on by myself.
Total votes which are totally exhausted before anyone gets elected: 2325
This year, with only a single member, Aryth would be it.
2: Aryth and Jin’taan.
3: Aryth, Jin’taan and Sort Dragon
4: Aryth, Jin’taan, Sort Dragon and me.
5: Aryth, Jin’taan, Steve Ronuken, Merkelchen,Sort Dragon
6: Aryth, Jin’taan, Steve Ronuken, Merkelchen, Sort Dragon, Brisc Rubal
7: Suitonia, Aryth, Jin’taan, Steve Ronuken, Merkelchen, Sort Dragon, Brisc Rubal
8: Suitonia, Aryth, Jin’taan, Innominate, Steve Ronuken, Merkelchen, Sort Dragon, Killah Bee
9: Suitonia, Aryth, Jin’taan, Innominate, Steve Ronuken, Merkelchen, Sort Dragon, Brisc Rubal, Killah Bee
11: Suitonia, Aryth, Jin’taan, Innominate, Steve Ronuken, Merkelchen, Sort Dragon, Tikktokk Tokkzikk, Brisc Rubal, The Judge, Killah Bee
12: Suitonia, Aryth, ExookiZ, Jin’taan, Innominate, Steve Ronuken, Merkelchen, Sort Dragon, Tikktokk Tokkzikk, Brisc Rubal, The Judge, Killah Bee
(I’m disappointed. Last year it would have been me in a single person CSM 😉
This is for Excel only I’m afraid. And only 2013 and up. Google Sheets just won’t load the size of file that this uses.
On https://market.fuzzwork.co.uk I generate aggregate data for all items sold on the market. This is things like average price, minimum price, maximum price, and the average price if you were to buy the cheapest 5% of the market. (handy for evening out any outliers.) This is available via an api, which is documented on the site. There’s a function for google sheets, and instructions on how to use it with power query in Excel.
However, this isn’t wonderful if you want to get everything. To that end, I’ve started dumping out a file with all the data in it. This is updated once every 30 minutes (or so), and is about 24MB uncompressed. Google sheets chokes on it. Excel handles it ok though. So that’s what I’m going to talk about here. I use Excel 2016, so this is focused towards that. I think it’ll work with 2013, but I have no way to test that.
To load this into Excel, create a new sheet. On that sheet, create a new query (Data ribbon, get data, from other sources, blank query). In the advanced editor, you want to paste in:
let
let
Source = Binary.Decompress(Web.Contents("http://market.fuzzwork.co.uk/aggregatecsv.csv.gz"),Compression.GZip),
#"Imported CSV" = Csv.Document(Source,[Delimiter=",", Columns=10, Encoding=1252, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(#"Imported CSV", [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"what", type text}, {"weightedaverage", type number}, {"maxval", type number}, {"minval", type number}, {"stddev", type number}, {"median", type number}, {"volume", type number}, {"numorders", Int64.Type}, {"fivepercent", type number}, {"orderSet", Int64.Type}})
in
#"Changed Type"
That should then load all the aggregate data into a sheet for you. Call that sheet something appropriate, like marketdata
Referring to the sheet name you configured. you can assemble the lookup value as you want to. Region ID, typeID, if you want buy or sell orders. true for buy, false for sell.
Something which has been a problem people have run into, is that google sheets have a problem with automatically updating figures from custom functions. You’ll often find functions which suggest having a useless reference to a cell which you can then use to trigger the updates.
This is obviously somewhat suboptimal. So as a potential solution for you good people, I give you the menu based price list.
Google Sheets allow you to have custom functions, but you can’t write from them, only return data. However, app script called from a menu option can write to its hearts desire. The downside is that you can’t pass it any parameters. So this means you must have the input data stored somewhere it can retrieve by name, and somewhere to output; named range is one option, but I’m taking the lazy option and using sheets with specific names.
So, with the link above, you can see how to do it. There’s an example sheet you can copy.
As a little explanation:
The onOpen function adds menu in. It should be possible to update the data from here, but I ran into a bug there, so it’s purely on refresh.
The updatePrices function is pretty much the same as the one for use with a custom function, with a couple of key differences. First, you get the two sheets which are important. Clear the output sheet so we just append to it.
Get the region id from the cell A1 of the typeid sheet.
Now it just runs through the first column, from row 2 (so it ignores the region) to the last row. Deduping the list comes next. Sure you could get the data twice, but this is more efficient.
Then it runs through the typelist 100 ids at a time, getting the json, running through it, and appending the results to the sheet.
For most capsuleers, Death is a constant companion. If we’re not dying, we’re killing. If we’re not killing, we’re trading in the implements of death. If we’re not trading, we’re manufacturing new and improved ways of killing people.
Funny occupations for someone who’s functionally immortal, don’t you think?
I guess there’s some truth to the common perception that capsuleers are sociopaths who don’t care about baseliners. I mean I’ve personally caused the deaths of tens of thousands, if not hundreds. I don’t think I’ve hit the millions, but that may be wishful thinking on my part. Of course, they all had it coming (Except possibly my crew. But they’re well compensated). You take the coin from a pirate, you trade in slaves, and you give up any rights you have to life.
These days, I tend to keep a few steps removed from it all. A Merchant of Death, rather than a deathdealer. Are my hands any cleaner? Probably not. Still doesn’t interrupt my sleep. Only thing which does, is thoughts of my own death. Like with the H4-RP4 Kyonoke outbreak. Sure I had a backup, but that’s not the same. At least not for this me.
I guess it comes down to keeping your friends close, but your enemies closer. Death’s the greatest fear of a capsuleer. True Death, that is. So we flirt with it. Hold it close, wear it like a cloak, spreading it where ever we go. There are times that I think on the religions of my childhood, and fear the day it all comes crashing down.