<?xml version="1.0"?>
<rss version="2.0"><channel><title>General Discussion Latest Topics</title><link>https://forum.enb-emulator.com/index.php?/forum/4-general-discussion/</link><description>General Discussion Latest Topics</description><language>en</language><item><title>Ensuring enb is around for the long term</title><link>https://forum.enb-emulator.com/index.php?/topic/13535-ensuring-enb-is-around-for-the-long-term/</link><description><![CDATA[<p>
	Is there any chance you guys would ever consider doing a self-hosted (Docker) version of the enb server? That way, in the event that it ever becomes financially unfeasible to continue operating your own, then at least enb could live on in some capacity.
</p>
]]></description><guid isPermaLink="false">13535</guid><pubDate>Sat, 20 Jul 2024 03:46:27 +0000</pubDate></item><item><title>Total NooB with computers</title><link>https://forum.enb-emulator.com/index.php?/topic/13775-total-noob-with-computers/</link><description><![CDATA[<p>Hello,</p><p></p><p>I thought i should check if it's still possible to play this game. Played it in the Westwood days and tried my luck a while after here. I tried downloading the various downloads but for each of them i get a warning to make sure i trust the exe. for each.</p><p>I don't now how to do that. Could anyone help this simpleton perhaps ?</p><p></p><p>If this game is still running and i manage to get back in and just enjoy it like i did before without a rush to max i would certainly donate to maintaining it. Provided that can be done without a CC, Paypall perhaps ?</p><p></p>]]></description><guid isPermaLink="false">13775</guid><pubDate>Fri, 02 Oct 2026 15:42:59 +0000</pubDate></item><item><title>Newest Forum Version 5.x</title><link>https://forum.enb-emulator.com/index.php?/topic/13773-newest-forum-version-5x/</link><description><![CDATA[<p>Just going to post this to get a spot for everyone confused about the new format or thinks they've found a bug. Please report it here so I'll know and can look into it. Everything should be fully functional, including the donation component, which was originally broken in the upgrade process. <br><br>Anyway, let me know if you run into anything weird.</p>]]></description><guid isPermaLink="false">13773</guid><pubDate>Wed, 23 Sep 2026 21:15:18 +0000</pubDate></item><item><title>Leveling help please</title><link>https://forum.enb-emulator.com/index.php?/topic/13772-leveling-help-please/</link><description><![CDATA[<p>
	Would anyone help me get some levels for my TS? He is level 57. I AM REALLY STRUGGLING TO GET COMBAT AND EXPLORE LEVELS. Oops, sorry for the caps. I'm really frustrated with this character. Can we set up a time to meet if you're interested? I really need help. I am overall 19/20/18.
</p>
]]></description><guid isPermaLink="false">13772</guid><pubDate>Mon, 21 Sep 2026 21:46:43 +0000</pubDate></item><item><title>Deleted characters?</title><link>https://forum.enb-emulator.com/index.php?/topic/13771-deleted-characters/</link><description><![CDATA[<p>
	Do you have the ability to restore deleted characters? I had two; one was a JD, and the other was a TT. Names could be Kastagir, Kaikura, Jarfaru, or Shaikura.
</p>
]]></description><guid isPermaLink="false">13771</guid><pubDate>Mon, 21 Sep 2026 11:28:57 +0000</pubDate></item><item><title><![CDATA[Post-mortem for Star Wars Galaxies and Earth & Beyond with Chris Klug (EnB) and Raph Koster (SWG)]]></title><link>https://forum.enb-emulator.com/index.php?/topic/12289-post-mortem-for-star-wars-galaxies-and-earth-beyond-with-chris-klug-enb-and-raph-koster-swg/</link><description><![CDATA[
<p>
	Dunno if this has been posted before but I found it quite informative.
</p>

<p>
	 
</p>

<p>
	<a href="https://www.raphkoster.com/games/presentations/scifi-mmps-lessons-learned/" rel="external nofollow">https://www.raphkoster.com/games/presentations/scifi-mmps-lessons-learned/</a>
</p>

<p>
	 
</p>

<p>
	Runtime for the audio file is a little over one hour.
</p>
]]></description><guid isPermaLink="false">12289</guid><pubDate>Tue, 27 Mar 2018 20:01:31 +0000</pubDate></item><item><title>Join us on Discord! (or TS or other communities)</title><link>https://forum.enb-emulator.com/index.php?/topic/13666-join-us-on-discord-or-ts-or-other-communities/</link><description><![CDATA[<p>
	I'll retire the TS topic as I'm told that's not really used anymore.  If anyone wants to join the Discord Server (or any other or subsequent community) then post such request here to notify staff of your interest.
</p>

<p>
	 
</p>

<p>
	If you're wondering why we don't just post the link directly, it is because then it would be easy for bots and other malicious entities to find it and join, increasing the workload of the people managing those communities.
</p>
]]></description><guid isPermaLink="false">13666</guid><pubDate>Thu, 31 Jul 2025 02:45:37 +0000</pubDate></item><item><title>7 Years</title><link>https://forum.enb-emulator.com/index.php?/topic/13770-7-years/</link><description><![CDATA[<p>
	Hello all
</p>

<p>
	 
</p>

<p>
	7 years ago a forum topic was started that was asking questions about the state of things within the emulator, albeit not in a very tactful manner. The post did get derailed and has since been buried due to time and space dust, but did have response from project leadership.
</p>

<p>
	 
</p>

<p>
	With that said though it has now been 7 years since I added my questions to the forum thread, and unfortunately things haven't really changed since the question was answered. The following is what was asked:
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" href="https://forum.enb-emulator.com/uploads/monthly_2026_09/image.png.e1dd2b23ef484d4fea0501471e02e06b.png" data-fileid="4921" data-fileext="png" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="4921" width="1000" alt="image.thumb.png.ad8b2928f88c2b236d37a75f6c87ad8e.png" src="https://forum.enb-emulator.com/uploads/monthly_2026_09/image.thumb.png.ad8b2928f88c2b236d37a75f6c87ad8e.png" loading="lazy" height="700"></a>
</p>

<p>
	 
</p>

<p>
	Now I am not the type of person to complain about efforts put in by others when I am unable to contribute to it myself, but I do feel that after this many years and (correct me if I am wrong) these patch notes and content never actually materialized. 
</p>

<p>
	 
</p>

<p>
	I fully understand that being a volunteer based project that unexpected life changes can drastically alter ones priorities in life, specially when the nature of this is as previously mentioned, volunteer based, and with time being the most valuable and important commodity we have in life it should not be used up dealing with something that you really don't have time spare for.
</p>

<p>
	 
</p>

<p>
	So that brings me to the end of this post with basically the same question, where does the project really stand regarding additional story advancement, sectors, mobs, server back end etc? If this is Earth &amp; Beyond Emulator in its final state, then so be it. Hundreds of us have thoroughly enjoyed what has been brought back to life and are eternally grateful for everyone involved in getting it off the ground and in the state we all love and play today. But if there is really content that the team has, please lets have a bit of transparency about how realistic it is that it will ever go live.
</p>

<p>
	 
</p>

<p>
	Thanks for reading
</p>

<p>
	 
</p>

<p>
	-FFT
</p>
]]></description><guid isPermaLink="false">13770</guid><pubDate>Sat, 12 Sep 2026 17:23:49 +0000</pubDate></item><item><title>EnB Gearlist back online</title><link>https://forum.enb-emulator.com/index.php?/topic/13768-enb-gearlist-back-online/</link><description><![CDATA[<p>
	Not played the EnB emulater myself for a long time, nor used the loot site I built all those years back.<br />
	But after reminising with a fellow Progren about the fun we used to have and what the name of a certain projectile weapon was, we noticed the gearlist loot database was offline.<br />
	<br />
	I've patched it and its back online <a href="https://enb.gearlist.co.uk/" rel="external nofollow">https://enb.gearlist.co.uk/</a><br />
	No alterations/fixes etc have been made to this site for years, info on there is very likely out of date.<br />
	But maybe it will be of use to someone.<br />
	<br />
	You never know, maybe i'll get back into the cockpit one day.<br />
	<br />
	Have fun out there <span class="ipsEmoji">🫡</span>
</p>
]]></description><guid isPermaLink="false">13768</guid><pubDate>Wed, 09 Sep 2026 06:19:03 +0000</pubDate></item><item><title>Returning after a very long time...again</title><link>https://forum.enb-emulator.com/index.php?/topic/13759-returning-after-a-very-long-timeagain/</link><description><![CDATA[<p>
	Hey folks, just downloaded and installed again.  I don't think I've played since around 2012 or so?  I used to belong to Static guild, are they still around perhaps?<br />
	It'd be great to talk to some folks again.
</p>
]]></description><guid isPermaLink="false">13759</guid><pubDate>Mon, 06 Jul 2026 01:51:16 +0000</pubDate></item><item><title>SERVER STATUS (current)</title><link>https://forum.enb-emulator.com/index.php?/topic/9052-server-status-current/</link><description><![CDATA[<p>I open this new server status thread since the old one wont let me subscribe (bah) and is also sending a lot of dead mails to accounts not existing anymore.</p>
<p>Post Server Status (only) here from now on - tnx :)</p>]]></description><guid isPermaLink="false">9052</guid><pubDate>Tue, 07 May 2013 17:19:45 +0000</pubDate></item><item><title><![CDATA[Exploration - Where have you been & where do you need to go?]]></title><link>https://forum.enb-emulator.com/index.php?/topic/13717-exploration-where-have-you-been-where-do-you-need-to-go/</link><description><![CDATA[<p>
	Is there any way to find out which sectors a toon has explored and which it hasn't? And to dig deeper, whether a toon has found all the navs in a given sector?
</p>
]]></description><guid isPermaLink="false">13717</guid><pubDate>Sat, 14 Mar 2026 16:51:02 +0000</pubDate></item><item><title>Storyline</title><link>https://forum.enb-emulator.com/index.php?/topic/13751-storyline/</link><description><![CDATA[<p>
	Greetings,
</p>

<p>
	 
</p>

<p>
	Apologies is this has been asked and answered but will the storyline ever advance? I would love to see how it plays out.
</p>
]]></description><guid isPermaLink="false">13751</guid><pubDate>Mon, 08 Jun 2026 23:19:56 +0000</pubDate></item><item><title>Is this still alive?</title><link>https://forum.enb-emulator.com/index.php?/topic/13712-is-this-still-alive/</link><description><![CDATA[<p>
	Does the game still exist? If so how can I install and play it? The discord invites on this forum are all expired or to servers that don't exist. The website for net-7 no longer exists. Just not sure where to go if this still is even a playable game.
</p>

<p>
	 
</p>

<p>
	Thanks for any help/answers!
</p>
]]></description><guid isPermaLink="false">13712</guid><pubDate>Thu, 19 Feb 2026 19:10:41 +0000</pubDate></item><item><title>Does Anyone Remember Any Of These People?</title><link>https://forum.enb-emulator.com/index.php?/topic/11270-does-anyone-remember-any-of-these-people/</link><description><![CDATA[<p>Part of the 'what server did I play on' train of thought that I never finished, I managed to find a ton of screenshots from 2002 on an old hdd and clipped out some of the conversations occurring in them. The defenders channel seems to have served much the same purpose as the New Players channel seems to play on Sunrise - generally being more sarcastic than helpful, but still worth listening to. Anyway, by chance does someone recognise any of these names, and happen to remember the server?</p>
<p>&nbsp;</p>
<p>[attachment=3137:Advice.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3138:Beams.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3139:Boot.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3140:Chugalug.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3141:EverCrack.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3142:Honesty.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3143:Kill Chavez.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3144:Listen.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3145:Meditating.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3146:MT.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3147:Pie.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3148:PL Monkey.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3149:Scuttled Bug.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3150:Spicy.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3151:Terminals.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3152:Trick or Treat.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3153:Tumble.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3154:Welcome.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3155:What.jpg]</p>
<p>&nbsp;</p>
<p>[attachment=3156:Woosh.jpg]</p>
<p>&nbsp;</p>
<p>---</p>
<p>&nbsp;</p>
<p>Also, because I think it was a neat coincidence:</p>
<p>&nbsp;</p>
<p>[attachment=3157:Sunblock.jpg]</p>
]]></description><guid isPermaLink="false">11270</guid><pubDate>Wed, 08 Apr 2015 04:56:04 +0000</pubDate></item><item><title>Your login information was not accepted....</title><link>https://forum.enb-emulator.com/index.php?/topic/13701-your-login-information-was-not-accepted/</link><description><![CDATA[<p>
	I WARMLY welcome the idea that I'm an idiot, but what the heck...
</p>

<p>
	 
</p>

<p>
	I can login to the forum, the client is installed but what did I miss to actually log into the game?
</p>

<p>
	 
</p>

<p>
	v/r,
</p>

<p>
	 
</p>

<p>
	Farlito 
</p>
]]></description><guid isPermaLink="false">13701</guid><pubDate>Sun, 11 Jan 2026 02:45:54 +0000</pubDate></item><item><title>Need combat help please.</title><link>https://forum.enb-emulator.com/index.php?/topic/13699-need-combat-help-please/</link><description><![CDATA[<p>
	I have been finding it hard to get combat levels. I'm 19/20/18 now. People are telling me to do scuttle bugs, but they are too grouped together and hard to pull just one. My class is a TS. I just really want to get some group combat lvl help please. I remember in live it was so easy to get groups going, but here everyone is too busy.
</p>
]]></description><guid isPermaLink="false">13699</guid><pubDate>Thu, 25 Dec 2025 02:53:28 +0000</pubDate></item><item><title>Welcome Back Culture!</title><link>https://forum.enb-emulator.com/index.php?/topic/13690-welcome-back-culture/</link><description><![CDATA[<p>
	I am a player returning to the game since EA sunset the game(<span class="ipsEmoji">😢</span>).  There are so many memories of this game that have enriched my life in the last 20 years from this game. The memories of the community were always the best ones. Unlike many MMOs I have played, the players in this one always managed to keep the isolation from creeping in while out amongst the stars. I missed that. <br />
	   A week ago I managed to get the Emu up and running. To my surprise the game felt just as it used to. Same welcome screen and login sounds. The disembarking track that plays when leaving the station. All the way to the starting grind of the Terran Scout, (waves fist at the single laser shooting the bots). The nostalgia has been hitting hard. But, this was nothing to the willingness of the current players to make each of my play session fun and welcoming. The general chat has always been helpful with all of my questions, treating me with grace and respect.
</p>

<p>
	   I want to place a special shout out to the pilots that stepped up and were willing to invest your time, credits, and patience to a newbie. It truly reflects what is to be love about this game. <strong>The People.</strong> The investment you all have made, makes the return experience just like coming home.  <em><strong>Thank you all!</strong></em>
</p>

<p>
	 
</p>

<p>
	<em><strong>- </strong></em>Caduceus (Cadu)
</p>
]]></description><guid isPermaLink="false">13690</guid><pubDate>Sun, 26 Oct 2025 17:07:34 +0000</pubDate></item><item><title>Ever considered... V'rix</title><link>https://forum.enb-emulator.com/index.php?/topic/13687-ever-considered-vrix/</link><description><![CDATA[<p>
	I'm actually curious about this: Did EA intend to make the V'rix a playable race? I think it'd be awesome to have them be a playable race. Wonder if the current developers could think of something along these lines? *wink* Just a thought. 
</p>
]]></description><guid isPermaLink="false">13687</guid><pubDate>Tue, 07 Oct 2025 05:07:38 +0000</pubDate></item><item><title>Halloween 2025 Event now live</title><link>https://forum.enb-emulator.com/index.php?/topic/13686-halloween-2025-event-now-live/</link><description><![CDATA[<p>
	lets get busy trick or treating, dressing up and smashing pu'n'kin's
</p>
]]></description><guid isPermaLink="false">13686</guid><pubDate>Sat, 04 Oct 2025 01:57:47 +0000</pubDate></item><item><title>Newly returing</title><link>https://forum.enb-emulator.com/index.php?/topic/13682-newly-returing/</link><description><![CDATA[<p>
	I never played the new classes and was wondering out of all classes what is the best solo combat/explorer or best class period for solo play?
</p>
]]></description><guid isPermaLink="false">13682</guid><pubDate>Thu, 18 Sep 2025 19:50:31 +0000</pubDate></item><item><title>Replacement map tool</title><link>https://forum.enb-emulator.com/index.php?/topic/13482-replacement-map-tool/</link><description><![CDATA[<p>
	So, I'm semi-abandoning a project I started but am probably not going to finish anytime soon. But I dumped enough hours into it, and feel it has enough merit, that I am going to share the source code in case someone else thinks this is cool and wants to work on it. What is it? A replacement for enbmaps.de and all the other mapping sites we have. I wanted it to show where mobs spawned, and where roid fields were, along with the mining results from every zone (see the wiki on pages like Glenn, to see what I mean by 'mining results', the list of ores found in each sector).<br />
	<br />
	Right now, I have all the sectors and all the navs (that I could find) imported. Look in the 'initialization data' folder. No mobs/roids/gravity wells have been added yet. The annoyance of logging ore fields in a way that didn't drive me nuts (and the tedium of logging mobs) made me not want to bother...for about 2 weeks now.
</p>

<p>
	 
</p>

<p>
	<strong>"What's the license"</strong>
</p>

<ol>
	<li>
		You may not use this software for commercial gain. No ads, no donations, no other revenue streams. If you break even with hosting and publicly (no request, publicly, on a normal page anyone can view) display that your operating it as non-profit, that's fine.
	</li>
	<li>
		It must remain open source in its entirety. Every image, every line of code, every byte of data in the database must all be accessible without authorization or signup.
	</li>
	<li>
		The code cannot be placed on github or any other site which intends to ingest the code into AI tools or otherwise monetize the code hosted there.
		<ol>
			<li>
				Running your own git instance and hosting from there is fine.
			</li>
		</ol>
	</li>
	<li>
		Any future license must require and honor these terms. Meaning, you cannot repackage this and change the license to MIT or something else. These terms of license must be in all downstream forks.
	</li>
</ol>

<p>
	 
</p>

<p>
	<strong>For running a production site</strong>
</p>

<p>
	For an actual production site, you'll probably want to use mysql instead of sqlite, but sqlite is great for development and the code changeover from one to the other isn't bad. Mostly it's replacing ? with %s in a bunch of places. Well...the binding process is completely different, but meh. I didn't write it using mysql, again, if zen4's Promontory 21 hadn't been the shitshow it was, I'd have written it to use mysql.
</p>

<p>
	 
</p>

<p>
	Also, you'll probably want to remove the Command Bar entirely from a production site. This tool wasn't really built to work like a wiki. It was meant for 1-2 people who are highly trusted to update the DB, then for it to mostly be a read-only experience.
</p>

<p>
	 
</p>

<p>
	<strong>The idea behind adding mobs:</strong>
</p>

<ol>
	<li>
		Fly around with two chars. A JD and a PW are optimal. JD has 3 beams, 1 Energy, 1 EMP, 1 Plasma. PW has 3 guns, one loaded Explosive, 1 loaded Impact, 1 loaded Chemical.
	</li>
	<li>
		Telescopium on the JD
	</li>
	<li>
		DO NOT USE ANY RESIST DEBUFFS OF ANY KIND! Not even gravity link.
	</li>
	<li>
		Click on the 'Add Mob' button, shoot with energy laser, say it does 145 (-50) damage. You'd type in 145 for the Damage Component and -50 for the Resist Component. There's a blub on the page that explains all this.
		<ol>
			<li>
				Fire 1 round from all the other weapon types and enter the damage/resist components.
			</li>
			<li>
				For positive numbers just enter the number without a + sign, so +500 is just 500.
			</li>
			<li>
				The page is smart enough to know that 145 (-50) meant you did 195 dmg, and 1000 (+500) meant you did 500.
			</li>
		</ol>
	</li>
	<li>
		The page will do the math on its own to determine the mob resists and store them in the DB.
	</li>
	<li>
		A checkbox needs to be added for whether or not the mob is default hostile.
	</li>
</ol>

<p>
	 
</p>

<p>
	<strong>"All this is in the wiki!"</strong>
</p>

<p>
	Yeah, but seeing it on a map is easier, and for things like mobs and ore, it helps to visually see where things are. Sure, there's Titanium in KV, but *where* in KV. Oh, only 2-3 of the 17 fields there. Cool. Now I know where to warp.
</p>

<p>
	 
</p>

<p>
	<strong>"This javascript is written by a moron"</strong>
</p>

<p>
	Yeah. this is my first major javascript attempt. I was making this a web 2.0 page (so, one page load, then only DOM changes after) purely for practice/learning. You'll note I don't import jquery or any libraries. This is all hand-written baisc javascript. Maybe I'm a masochist. Maybe I just like learning. *shrug*
</p>

<p>
	 
</p>

<p>
	<strong>"How did you get the navs?"</strong>
</p>

<ol>
	<li>
		Log into the game (<strong>ON ONE CHARACTER, DO NOT MULTIBOX</strong> FOR THIS unless using separate installs), enter a sector,
	</li>
	<li>
		Create a private channel (mostly to avoid spamming others)
	</li>
	<li>
		Target a 'normal' nav, press ctrl+t (I remapped it to b for easier pressing)
		<ol>
			<li>
				Press n to go to the next visible nav
			</li>
			<li>
				Press ctrl+t
			</li>
			<li>
				Repeat until all visible navs are reported in chat. Don't worry about duplicates, the code below is smart enough to remove them.
			</li>
		</ol>
	</li>
	<li>
		type 'hidden' in your private channel
	</li>
	<li>
		press 'x' to target the nearest hidden nav (move away if asteroids are in view)
		<ol>
			<li>
				Press ctrl+t
			</li>
			<li>
				Press n to go to the next hidden nav
			</li>
			<li>
				Repeat until all hidden navs are dumped
			</li>
		</ol>
	</li>
	<li>
		Close game
	</li>
	<li>
		Run script below on your chat.log file
	</li>
	<li>
		Copy-paste output into the "Add Navs" button, after you check the 'JSON Import' checkbox
	</li>
</ol>

<p>
	 
</p>

<p>
	I imagine a script similar to this will be useful for import mobs/roids from chat as well. I did not do the work to make this a thing though. Also, I did not learn sectors could be asymmetric (like Grissom, where it's box is -450|575|-525|650) until I was almost done adding sectors, so roughly 40 of the 69 sectors in the game should be double-checked for asymmetry. sector_ids 1-53 are suspect, basically. Xipe Totec was the first asymmetric zone I remember finding. After Xipe, I made sure to check all 4 dimensions instead of assuming symmetry.
</p>

<p>
	 
</p>

<p>
	--Parse_navs.py--
</p>

<pre class="ipsCode prettyprint prettyprinted"><span class="com">#!/usr/bin/python3</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> argparse
</span><span class="kwd">import</span><span class="pln"> json
</span><span class="kwd">import</span><span class="pln"> re

</span><span class="str">"""THis list is also defined in functions.php and map_script.js, update all 3!

$NAV_TYPE_MAP_BASE = [
    "Normal Nav" =&gt; 0,
    "Hidden Nav" =&gt; 1,
    "Normal Gate" =&gt; 2,
    "Faction Gate" =&gt; 3,
    "Normal Station" =&gt; 4,
    "Faction Station" =&gt; 5,
    "Planet" =&gt; 6,
    "Landable Planet" =&gt; 7,
    "Weft" =&gt; 8,
    "Extended Weft" =&gt; 9,
    "Ore Field" =&gt; 10
];
"""</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> parse_log</span><span class="pun">(</span><span class="pln">file_path</span><span class="pun">,</span><span class="pln"> channel_name</span><span class="pun">,</span><span class="pln"> player_name</span><span class="pun">):</span><span class="pln">
    results </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">

    sector_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"We have entered (.+?) Sector \((.+?)\)"</span><span class="pun">)</span><span class="pln">
    target_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"\[(\d+)\] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">player_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> r</span><span class="str">": Target '(.+?)' at \(([-\d.]+), ([-\d.]+), ([-\d.]+)\)"</span><span class="pun">)</span><span class="pln">
    hidden_nav_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"\[(\d+)\] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">player_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> r</span><span class="str">": hidden"</span><span class="pun">)</span><span class="pln">

    current_sector </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
    hidden_nav_mode </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">False</span><span class="pln">
    </span><span class="kwd">with</span><span class="pln"> open</span><span class="pun">(</span><span class="pln">file_path</span><span class="pun">,</span><span class="pln"> </span><span class="str">'r'</span><span class="pun">,</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">'latin-1'</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">as</span><span class="pln"> file</span><span class="pun">:</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> line </span><span class="kwd">in</span><span class="pln"> file</span><span class="pun">:</span><span class="pln">
            sector_match </span><span class="pun">=</span><span class="pln"> sector_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> sector_match</span><span class="pun">:</span><span class="pln">
                sector_name </span><span class="pun">=</span><span class="pln"> sector_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                system_name </span><span class="pun">=</span><span class="pln"> sector_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
                current_sector </span><span class="pun">=</span><span class="pln"> sector_name
                </span><span class="com">#print(f"We have entered {sector_name} ({system_name})")</span><span class="pln">
                hidden_nav_mode </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">False</span><span class="pln">
                
            </span><span class="kwd">if</span><span class="pln"> hidden_nav_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">):</span><span class="pln">
                hidden_nav_mode </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">True</span><span class="pln">

            target_match </span><span class="pun">=</span><span class="pln"> target_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> target_match</span><span class="pun">:</span><span class="pln">
                target_channel </span><span class="pun">=</span><span class="pln"> target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                target_name </span><span class="pun">=</span><span class="pln"> target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
                nav_type </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
                
                </span><span class="kwd">if</span><span class="pln"> target_name</span><span class="pun">.</span><span class="pln">startswith</span><span class="pun">(</span><span class="str">"Sector Gate "</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> target_name</span><span class="pun">.</span><span class="pln">startswith</span><span class="pun">(</span><span class="str">"Accelerator"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> target_name</span><span class="pun">.</span><span class="pln">startswith</span><span class="pun">(</span><span class="str">"System Gate"</span><span class="pun">):</span><span class="pln">
                    nav_type </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> hidden_nav_mode</span><span class="pun">:</span><span class="pln">
                    nav_type </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pln">
                
                </span><span class="kwd">if</span><span class="pln"> target_channel </span><span class="pun">==</span><span class="pln"> channel_name</span><span class="pun">:</span><span class="pln">
                    x_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                    y_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                    z_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">5</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                    
                    </span><span class="kwd">if</span><span class="pln"> current_sector </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> results</span><span class="pun">:</span><span class="pln">
                        results</span><span class="pun">[</span><span class="pln">current_sector</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">
                    </span><span class="com">#Assume normal navs until we have some way to mark other things automatically.</span><span class="pln">
                    
                    coord_pack </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">x_coord</span><span class="pun">,</span><span class="pln"> y_coord</span><span class="pun">,</span><span class="pln"> z_coord</span><span class="pun">,</span><span class="pln"> nav_type</span><span class="pun">]</span><span class="pln">
                    </span><span class="kwd">if</span><span class="pln"> target_name </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> results</span><span class="pun">[</span><span class="pln">current_sector</span><span class="pun">]:</span><span class="pln">
                        results</span><span class="pun">[</span><span class="pln">current_sector</span><span class="pun">][</span><span class="pln">target_name</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">coord_pack</span><span class="pun">]</span><span class="pln">
                    </span><span class="kwd">elif</span><span class="pln"> coord_pack </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> results</span><span class="pun">[</span><span class="pln">current_sector</span><span class="pun">][</span><span class="pln">target_name</span><span class="pun">]:</span><span class="pln">
                        results</span><span class="pun">[</span><span class="pln">current_sector</span><span class="pun">][</span><span class="pln">target_name</span><span class="pun">].</span><span class="pln">append</span><span class="pun">(</span><span class="pln">coord_pack</span><span class="pun">)</span><span class="pln">
                    
                    </span><span class="com">#print(f"Target '{target_name}' at ({x_coord}, {y_coord}, {z_coord}, {nav_type})")</span><span class="pln">
    </span><span class="com">#print(json.dumps(results, indent=4))</span><span class="pln">
    </span><span class="com">#print(results)</span><span class="pln">
    </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">format_output</span><span class="pun">(</span><span class="pln">results</span><span class="pun">))</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> format_output</span><span class="pun">(</span><span class="pln">data</span><span class="pun">):</span><span class="pln">
    formatted_output </span><span class="pun">=</span><span class="pln"> </span><span class="str">"{"</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> key </span><span class="kwd">in</span><span class="pln"> data</span><span class="pun">:</span><span class="pln">
        formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'"{key}": {{\n'</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> nav </span><span class="kwd">in</span><span class="pln"> data</span><span class="pun">[</span><span class="pln">key</span><span class="pun">]:</span><span class="pln">
            formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'\t"{nav}": {data[key][nav]},\n'</span><span class="pln">
        formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"},\n"</span><span class="pln">
    </span><span class="com"># Remove the trailing comma and newline character for the last line</span><span class="pln">
    formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"}\n"</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> formatted_output

</span><span class="kwd">if</span><span class="pln"> __name__ </span><span class="pun">==</span><span class="pln"> </span><span class="str">"__main__"</span><span class="pun">:</span><span class="pln">
    parser </span><span class="pun">=</span><span class="pln"> argparse</span><span class="pun">.</span><span class="typ">ArgumentParser</span><span class="pun">(</span><span class="pln">description</span><span class="pun">=</span><span class="str">"Parse log file"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"file"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Path to the log file"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"--channel"</span><span class="pun">,</span><span class="pln"> default</span><span class="pun">=</span><span class="str">"100"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Channel name (default: [100])"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"--player"</span><span class="pun">,</span><span class="pln"> default</span><span class="pun">=</span><span class="str">"Doctorje"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Player name (default: Doctorje)"</span><span class="pun">)</span><span class="pln">
    args </span><span class="pun">=</span><span class="pln"> parser</span><span class="pun">.</span><span class="pln">parse_args</span><span class="pun">()</span><span class="pln">

    parse_log</span><span class="pun">(</span><span class="pln">args</span><span class="pun">.</span><span class="pln">file</span><span class="pun">,</span><span class="pln"> args</span><span class="pun">.</span><span class="pln">channel</span><span class="pun">,</span><span class="pln"> args</span><span class="pun">.</span><span class="pln">player</span><span class="pun">)</span></pre>

<p>
	 
</p>

<p>
	 
</p>

<p>
	--parse_ores.py--
</p>

<pre class="ipsCode prettyprint prettyprinted"><span class="com">#!/usr/bin/python3</span><span class="pln">

</span><span class="kwd">import</span><span class="pln"> argparse
</span><span class="kwd">import</span><span class="pln"> json
</span><span class="kwd">import</span><span class="pln"> re
</span><span class="kwd">import</span><span class="pln"> sqlite3
</span><span class="kwd">import</span><span class="pln"> sys

RESOURCE_SOURCE_MAP </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="str">"Copper Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Crude Graphite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Crude Nickel"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Diridium Crystal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Hydrogen"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Iron Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Lead Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Lithium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Magnetite Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Mordanite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Nitrogen"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Oxygen"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Potash"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Agate"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Beryl"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Black Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Bloodstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Blue Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Crude Coal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Green Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Jasper"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Onyx"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Red Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Topaz"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw White Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Yellow Tazeron"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Sand"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Sponge Chloride"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Sulfates"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Tar"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Uranium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Zinc Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Aluminium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Brominite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Cadmium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Carbon Dioxide"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Crude Oil"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Germanium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Helium"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Hermesite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Magnesium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Methane"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Molybdenum Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Phosphates"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Plutonium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Quartz Crystals"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Amethyst"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Coal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Garnet"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Moonstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Sunstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Tourmaline"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Turquoise"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Tin Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Zircon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Alanite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Barite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Boronite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Caesium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Calcite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Cobalite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Fluorine"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Gallium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Indium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Light Crude Oil"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Obsidian"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Polonium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Alexandrite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Anthracite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Citrine"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Lapis Lazuli"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Malachite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Star Iron Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Tungsten Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">3</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Anubium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Argon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Californium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Ceresite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Galactic Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Herculinium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Manganese Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Meteoric Sand"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Neon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Black Opal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Centauricite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Fire Opal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Flawless Garnet"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Ruby"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Saganite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Silver Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Solar Sweet Oil"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Vanadium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">4</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Andromesite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Bastinium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Brood Oil"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Chromium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Gold Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Hades Blood"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Halon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Hawkinsite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Minervite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Radium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Radon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Black Pearl"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Capellicite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Heartstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Sapphire"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Skystone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Rhodite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Titanium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Zalmoxium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Adamantine Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Charon's Dust"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Curium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Discordite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Hafnium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Homerite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Krypton"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Mirandium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Osirium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Oxium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Platinum Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Anthenicite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Charon Crystal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Emerald"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Flawless Ruby"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Icy Pearl"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Stygian Blackwater"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Xenon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">6</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Apollonite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Brucite Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Celestial Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Chalcophanite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Conorite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Cupidite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Demeter's Tears"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Horusium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Inderite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Iridium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Leonite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Neutronium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Niobite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Barite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Diamond"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Eye Stone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Firerock"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Galactic Rimstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Hadecite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Stojsavline"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Stygian Blacksand"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Tantalum Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Vaneon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Wexeon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">7</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Abyssian Dust"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Ambrosia Crude"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Boragon"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Duplium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Emperion"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Helvatha"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Idunium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Khnumium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Minosium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Morganium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Persephonite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Pyrrhotite Gneiss"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Acheronite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Alunite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Charybdis Voidstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Meteoric Diamond"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Mica"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Scyllan Diamond"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Tincal"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Voidgem"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Vanirum Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Yunieon Gas"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Abaddon Ashes"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Aesirium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Asmodeusium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Astralite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Balderium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Crude Rutha"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Etherion"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Grail Water"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Kronosite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Glowing"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Modredium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Nova Dust"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Noxion"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Pagion"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Gas"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Erebusite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Promethium"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Star Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Tiberium Crystals"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Raw Wormstone"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Star Ash"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Crystal"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Thothium Ore"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Troseki"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Rock"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">],</span><span class="pln">
    </span><span class="str">"Ziosite"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Hydrocarbon"</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">]</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="str">"""
Error List:
    Raw Erebusite comes from Hydrocarbon, not Crystal
    Raw Charon Crystal comes from Glowing, not Crystal?
"""</span><span class="pln">

</span><span class="str">"""THis list is also defined in functions.php and map_script.js, update all 3!

$NAV_TYPE_MAP_BASE = [
    "Normal Nav" =&gt; 0,
    "Hidden Nav" =&gt; 1,
    "Normal Gate" =&gt; 2,
    "Faction Gate" =&gt; 3,
    "Normal Station" =&gt; 4,
    "Faction Station" =&gt; 5,
    "Planet" =&gt; 6,
    "Landable Planet" =&gt; 7,
    "Weft" =&gt; 8,
    "Extended Weft" =&gt; 9,
    "Ore Field" =&gt; 10
];
"""</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> createDB</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">):</span><span class="pln">
    sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"""CREATE TABLE raw_roids(
        roid_id INTEGER PRIMARY KEY,
        sector_name TEXT NOT NULL,
        x INTEGER NOT NULL,
        y INTEGER NOT NULL,
        z INTEGER NOT NULL,
        source_type TEXT CHECK(source_type IN ('Rock','Glowing','Hydrocarbon','Crystal','Gas','Hulk')) NOT NULL,
        level INTEGER NOT NULL CHECK(level IN (1,2,3,4,5,6,7,8,9)))"""</span><span class="pln">
    
    db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="pln">sql</span><span class="pun">);</span><span class="pln">
    
    sql </span><span class="pun">=</span><span class="pln"> </span><span class="str">"""CREATE TABLE raw_roid_contents(
        raw_roid_id INTEGER NOT NULL, 
        roid_held TEXT NOT NULL,
        quantity INTEGER NOT NULL,
        FOREIGN KEY (raw_roid_id) REFERENCES raw_roids(roid_id) ON DELETE CASCADE)"""</span><span class="pln">
        
    db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="pln">sql</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> getNextID</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">,</span><span class="pln"> table_name</span><span class="pun">,</span><span class="pln"> id_col_name</span><span class="pun">):</span><span class="pln">
    db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="pln">f</span><span class="str">"""SELECT IFNULL(MIN(t1.{id_col_name} + 1),1) AS next_available_id 
        FROM {table_name} t1 LEFT JOIN {table_name} t2 ON t1.{id_col_name} + 1 = t2.{id_col_name} 
        WHERE t2.{id_col_name} IS NULL;"""</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> db_cur</span><span class="pun">.</span><span class="pln">fetchone</span><span class="pun">()[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> addDataToDB</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">,</span><span class="pln"> roid_details</span><span class="pun">,</span><span class="pln"> mining_details</span><span class="pun">):</span><span class="pln">
    </span><span class="com">#Check if the roid is already in the DB</span><span class="pln">
    db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="str">"SELECT roid_id FROM raw_roids WHERE sector_name = ? AND x = ? AND y = ? AND z = ? AND source_type = ? AND level = ?"</span><span class="pun">,</span><span class="pln"> roid_details</span><span class="pun">)</span><span class="pln">
    row </span><span class="pun">=</span><span class="pln"> db_cur</span><span class="pun">.</span><span class="pln">fetchone</span><span class="pun">()</span><span class="pln">
    roid_id </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">:</span><span class="pln">
        roid_id </span><span class="pun">=</span><span class="pln"> row</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
    </span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
        roid_id </span><span class="pun">=</span><span class="pln"> getNextID</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">,</span><span class="pln"> </span><span class="str">"raw_roids"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"roid_id"</span><span class="pun">)</span><span class="pln">
        final_roid_details </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">roid_id</span><span class="pun">,)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> roid_details
        db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="str">'INSERT INTO raw_roids (roid_id, sector_name, x, y, z, source_type, level) VALUES (?,?, ?,?,?, ?,?)'</span><span class="pun">,</span><span class="pln"> final_roid_details</span><span class="pun">)</span><span class="pln">
    
    </span><span class="kwd">if</span><span class="pln"> mining_details</span><span class="pun">:</span><span class="pln">
        final_mining_details </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">roid_id</span><span class="pun">,)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> mining_details
        db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="str">"INSERT INTO raw_roid_contents(raw_roid_id, roid_held, quantity) VALUES (?,?,?)"</span><span class="pun">,</span><span class="pln"> final_mining_details</span><span class="pun">)</span><span class="pln">
</span><span class="com">#end addDataToDB</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> parse_log</span><span class="pun">(</span><span class="pln">file_path</span><span class="pun">,</span><span class="pln"> channel_name</span><span class="pun">,</span><span class="pln"> player_name</span><span class="pun">):</span><span class="pln">
    results </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{}</span><span class="pln">

    db_conn </span><span class="pun">=</span><span class="pln"> sqlite3</span><span class="pun">.</span><span class="pln">connect</span><span class="pun">(</span><span class="str">":memory:"</span><span class="pun">)</span><span class="pln">
    </span><span class="com">#db_conn = sqlite3.connect("testing.db")</span><span class="pln">
    db_conn</span><span class="pun">.</span><span class="pln">row_factory </span><span class="pun">=</span><span class="pln"> sqlite3</span><span class="pun">.</span><span class="typ">Row</span><span class="pln">
    db_cur </span><span class="pun">=</span><span class="pln"> db_conn</span><span class="pun">.</span><span class="pln">cursor</span><span class="pun">()</span><span class="pln">
    
    createDB</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">)</span><span class="pln">

    sector_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"We have entered (.+?) Sector \((.+?)\)"</span><span class="pun">)</span><span class="pln">
    target_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"\["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">channel_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">player_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> r</span><span class="str">": Target '(.+?)' at \(([-\d.]+), ([-\d.]+), ([-\d.]+)\)"</span><span class="pun">)</span><span class="pln">
    target_with_level_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"\["</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">channel_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">player_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> r</span><span class="str">": ([-\d.]+) Target '(.+?)' at \(([-\d.]+), ([-\d.]+), ([-\d.]+)\)"</span><span class="pun">)</span><span class="pln">
    prospect_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"COMPUTER: Prospected \(([-\d.]+)\) (.+?)$"</span><span class="pun">)</span><span class="pln">
    roid_level_pattern </span><span class="pun">=</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">compile</span><span class="pun">(</span><span class="pln">r</span><span class="str">"\[(\d+)\] "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> re</span><span class="pun">.</span><span class="pln">escape</span><span class="pun">(</span><span class="pln">player_name</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> r</span><span class="str">": ([-\d.]+) Target '"</span><span class="pun">)</span><span class="pln">

    current_sector </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
    current_roid_level </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
    current_roid </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">None</span><span class="pln">
    current_roid_ingame_type </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">None</span><span class="pln">
    roid_contents </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span><span class="pln">
    </span><span class="kwd">with</span><span class="pln"> open</span><span class="pun">(</span><span class="pln">file_path</span><span class="pun">,</span><span class="pln"> </span><span class="str">'r'</span><span class="pun">,</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">'latin-1'</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">as</span><span class="pln"> file</span><span class="pun">:</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> line </span><span class="kwd">in</span><span class="pln"> file</span><span class="pun">:</span><span class="pln">
            sector_match </span><span class="pun">=</span><span class="pln"> sector_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> sector_match</span><span class="pun">:</span><span class="pln">
                sector_name </span><span class="pun">=</span><span class="pln"> sector_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                system_name </span><span class="pun">=</span><span class="pln"> sector_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
                current_sector </span><span class="pun">=</span><span class="pln"> sector_name
                current_roid_level </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pln">
                current_roid </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">None</span><span class="pln">
                current_roid_ingame_type </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">None</span><span class="pln">
                </span><span class="com">#print(f"We have entered {sector_name} ({system_name})")</span><span class="pln">

            roid_level_match </span><span class="pun">=</span><span class="pln"> roid_level_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> roid_level_match</span><span class="pun">:</span><span class="pln">
                current_roid_level </span><span class="pun">=</span><span class="pln"> roid_level_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">

            hulk_match </span><span class="pun">=</span><span class="pln"> target_with_level_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            target_match </span><span class="pun">=</span><span class="pln"> target_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            
            </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">hulk_match </span><span class="kwd">or</span><span class="pln"> target_match</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> current_roid </span><span class="kwd">is</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">:</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> current_roid_ingame_type </span><span class="pun">!=</span><span class="pln"> </span><span class="str">'Hulk'</span><span class="pun">:</span><span class="pln">
                    </span><span class="com">#Run through once to find max level ore in roid, but not for hulks.</span><span class="pln">
                    </span><span class="kwd">for</span><span class="pln"> contents </span><span class="kwd">in</span><span class="pln"> roid_contents</span><span class="pun">:</span><span class="pln">
                        </span><span class="kwd">if</span><span class="pln"> current_roid</span><span class="pun">[</span><span class="lit">5</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln"> RESOURCE_SOURCE_MAP</span><span class="pun">[</span><span class="pln">contents</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]][</span><span class="lit">1</span><span class="pun">]:</span><span class="pln">
                            current_roid</span><span class="pun">[</span><span class="lit">5</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> RESOURCE_SOURCE_MAP</span><span class="pun">[</span><span class="pln">contents</span><span class="pun">[</span><span class="lit">0</span><span class="pun">]][</span><span class="lit">1</span><span class="pun">]</span><span class="pln">
                </span><span class="com">#and again to actually update db</span><span class="pln">
                </span><span class="kwd">for</span><span class="pln"> contents </span><span class="kwd">in</span><span class="pln"> roid_contents</span><span class="pun">:</span><span class="pln">
                    addDataToDB</span><span class="pun">(</span><span class="pln">db_cur</span><span class="pun">,</span><span class="pln"> tuple</span><span class="pun">(</span><span class="pln">current_roid</span><span class="pun">),</span><span class="pln"> contents</span><span class="pun">)</span><span class="pln">
                roid_contents </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span><span class="pln">
            
            </span><span class="kwd">if</span><span class="pln"> hulk_match</span><span class="pun">:</span><span class="pln">
                target_level </span><span class="pun">=</span><span class="pln"> hulk_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                target_name </span><span class="pun">=</span><span class="pln"> hulk_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
                x_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">hulk_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                y_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">hulk_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                z_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">hulk_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">5</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">

                current_roid </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">sector_name</span><span class="pun">,</span><span class="pln"> x_coord</span><span class="pun">,</span><span class="pln">y_coord</span><span class="pun">,</span><span class="pln">z_coord</span><span class="pun">,</span><span class="pln"> target_name</span><span class="pun">,</span><span class="pln"> target_level</span><span class="pun">]</span><span class="pln">
                current_roid_ingame_type </span><span class="pun">=</span><span class="pln"> target_name
                
            </span><span class="kwd">if</span><span class="pln"> target_match</span><span class="pun">:</span><span class="pln">
                target_name </span><span class="pun">=</span><span class="pln"> target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">

                x_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                y_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">3</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                z_coord </span><span class="pun">=</span><span class="pln"> int</span><span class="pun">(</span><span class="pln">round</span><span class="pun">(</span><span class="pln">float</span><span class="pun">(</span><span class="pln">target_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">4</span><span class="pun">)),</span><span class="lit">0</span><span class="pun">))</span><span class="pln">
                
                current_roid </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">sector_name</span><span class="pun">,</span><span class="pln"> x_coord</span><span class="pun">,</span><span class="pln">y_coord</span><span class="pun">,</span><span class="pln">z_coord</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">]</span><span class="pln">
                current_roid_ingame_type </span><span class="pun">=</span><span class="pln"> target_name
               
            prospect_match </span><span class="pun">=</span><span class="pln"> prospect_pattern</span><span class="pun">.</span><span class="pln">search</span><span class="pun">(</span><span class="pln">line</span><span class="pun">)</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> prospect_match </span><span class="kwd">and</span><span class="pln"> current_roid </span><span class="kwd">is</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">:</span><span class="pln">
                quantity </span><span class="pun">=</span><span class="pln"> prospect_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                ore_name </span><span class="pun">=</span><span class="pln"> prospect_match</span><span class="pun">.</span><span class="pln">group</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln">
                </span><span class="kwd">if</span><span class="pln"> ore_name </span><span class="kwd">in</span><span class="pln"> RESOURCE_SOURCE_MAP</span><span class="pun">:</span><span class="pln">
                    roid_type </span><span class="pun">=</span><span class="pln"> RESOURCE_SOURCE_MAP</span><span class="pun">[</span><span class="pln">ore_name</span><span class="pun">][</span><span class="lit">0</span><span class="pun">]</span><span class="pln">
                    roid_type_ingame </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pln">
                    
                    </span><span class="kwd">if</span><span class="pln"> roid_type </span><span class="pun">==</span><span class="pln"> </span><span class="str">"Rock"</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> roid_type </span><span class="pun">==</span><span class="pln"> </span><span class="str">"Glowing"</span><span class="pun">:</span><span class="pln">
                        roid_type_ingame </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Asteroid"</span><span class="pln">
                    </span><span class="kwd">elif</span><span class="pln"> roid_type </span><span class="pun">==</span><span class="pln"> </span><span class="str">"Crystal"</span><span class="pun">:</span><span class="pln">
                        roid_type_ingame </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Crystalline Asteroid"</span><span class="pln">
                    </span><span class="kwd">elif</span><span class="pln"> roid_type </span><span class="pun">==</span><span class="pln"> </span><span class="str">"Gas"</span><span class="pun">:</span><span class="pln">
                        roid_type_ingame </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Gas Cloud"</span><span class="pln">
                    </span><span class="kwd">elif</span><span class="pln"> roid_type </span><span class="pun">==</span><span class="pln"> </span><span class="str">"Hydrocarbon"</span><span class="pun">:</span><span class="pln">
                        roid_type_ingame </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Hydrocarbon Deposit"</span><span class="pln">
                    </span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
                        roid_type_ingame </span><span class="pun">=</span><span class="pln"> roid_type
                    
                    </span><span class="kwd">if</span><span class="pln"> current_roid_ingame_type </span><span class="pun">!=</span><span class="pln"> roid_type_ingame</span><span class="pun">:</span><span class="pln">
                        </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">f</span><span class="str">"INVALID SOURCE ERROR: {current_roid} has contents {ore_name} which should come from {roid_type} type roids."</span><span class="pun">)</span><span class="pln">
                        sys</span><span class="pun">.</span><span class="pln">exit</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln">
                        
                    current_roid</span><span class="pun">[</span><span class="lit">4</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> roid_type
                
                roid_contents</span><span class="pun">.</span><span class="pln">append</span><span class="pun">((</span><span class="pln">ore_name</span><span class="pun">,</span><span class="pln"> quantity</span><span class="pun">))</span><span class="pln">
                

    db_conn</span><span class="pun">.</span><span class="pln">commit</span><span class="pun">()</span><span class="pln">
    
    db_cur</span><span class="pun">.</span><span class="pln">execute</span><span class="pun">(</span><span class="str">"Select * from raw_roids LEFT JOIN raw_roid_contents on roid_id = raw_roid_id"</span><span class="pun">)</span><span class="pln">
    rows </span><span class="pun">=</span><span class="pln"> db_cur</span><span class="pun">.</span><span class="pln">fetchall</span><span class="pun">()</span><span class="pln">
    
    the_json </span><span class="pun">=</span><span class="pln"> dict</span><span class="pun">()</span><span class="pln">
    
    prev_roid_id </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">None</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> row </span><span class="kwd">in</span><span class="pln"> rows</span><span class="pun">:</span><span class="pln">
        </span><span class="com"># sys.stdout.write("DEBUG: ")</span><span class="pln">
        </span><span class="com"># for data in row:</span><span class="pln">
            </span><span class="com"># sys.stdout.write(f",{data} ")</span><span class="pln">
        </span><span class="com"># sys.stdout.write("\n")</span><span class="pln">
    
        </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> the_json</span><span class="pun">:</span><span class="pln">
            the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> dict</span><span class="pun">()</span><span class="pln">
        
        </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]]:</span><span class="pln">
            the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span><span class="pln">
        
        roid_details </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="str">"level"</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'level'</span><span class="pun">],</span><span class="pln"> </span><span class="str">"coords"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'x'</span><span class="pun">],</span><span class="pln">row</span><span class="pun">[</span><span class="str">'y'</span><span class="pun">],</span><span class="pln">row</span><span class="pun">[</span><span class="str">'z'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
        
        </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'roid_held'</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">is</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">None</span><span class="pun">:</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> </span><span class="str">'contents'</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> roid_details</span><span class="pun">:</span><span class="pln">
                roid_details</span><span class="pun">[</span><span class="str">'contents'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> dict</span><span class="pun">()</span><span class="pln">
            roid_details</span><span class="pun">[</span><span class="str">'contents'</span><span class="pun">][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'roid_held'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'quantity'</span><span class="pun">]</span><span class="pln">
        
        </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'roid_id'</span><span class="pun">]</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> prev_roid_id</span><span class="pun">:</span><span class="pln">
            the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]].</span><span class="pln">append</span><span class="pun">(</span><span class="pln">roid_details</span><span class="pun">)</span><span class="pln">
        </span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
            </span><span class="kwd">if</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'roid_held'</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">in</span><span class="pln"> the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]][-</span><span class="lit">1</span><span class="pun">][</span><span class="str">'contents'</span><span class="pun">]:</span><span class="pln">
                the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]][-</span><span class="lit">1</span><span class="pun">][</span><span class="str">'contents'</span><span class="pun">][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'roid_held'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">+=</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'quantity'</span><span class="pun">]</span><span class="pln">
            </span><span class="kwd">else</span><span class="pun">:</span><span class="pln">
                the_json</span><span class="pun">[</span><span class="pln">row</span><span class="pun">[</span><span class="str">'sector_name'</span><span class="pun">]][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'source_type'</span><span class="pun">]][-</span><span class="lit">1</span><span class="pun">][</span><span class="str">'contents'</span><span class="pun">][</span><span class="pln">row</span><span class="pun">[</span><span class="str">'roid_held'</span><span class="pun">]]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'quantity'</span><span class="pun">]</span><span class="pln">
        prev_roid_id </span><span class="pun">=</span><span class="pln"> row</span><span class="pun">[</span><span class="str">'roid_id'</span><span class="pun">]</span><span class="pln">
            
    </span><span class="com">#print(json.dumps(the_json, indent=4))</span><span class="pln">
    </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">json</span><span class="pun">.</span><span class="pln">dumps</span><span class="pun">(</span><span class="pln">the_json</span><span class="pun">))</span><span class="pln">
    </span><span class="com">#print(the_json)</span><span class="pln">
    </span><span class="com">#print(format_output(the_json))</span><span class="pln">

</span><span class="kwd">def</span><span class="pln"> format_output</span><span class="pun">(</span><span class="pln">data</span><span class="pun">):</span><span class="pln">
    formatted_output </span><span class="pun">=</span><span class="pln"> </span><span class="str">"{"</span><span class="pln">
    </span><span class="kwd">for</span><span class="pln"> sector </span><span class="kwd">in</span><span class="pln"> data</span><span class="pun">:</span><span class="pln">
        formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'"{sector}": {{\n'</span><span class="pln">
        </span><span class="kwd">for</span><span class="pln"> roid_type </span><span class="kwd">in</span><span class="pln"> data</span><span class="pun">[</span><span class="pln">sector</span><span class="pun">]:</span><span class="pln">
            formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'\t"{roid_type}": [\n'</span><span class="pln">
            </span><span class="kwd">for</span><span class="pln"> inner_data </span><span class="kwd">in</span><span class="pln"> data</span><span class="pun">[</span><span class="pln">sector</span><span class="pun">][</span><span class="pln">roid_type</span><span class="pun">]:</span><span class="pln">
                formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'\t\t{{\n'</span><span class="pln">
                </span><span class="kwd">for</span><span class="pln"> key </span><span class="kwd">in</span><span class="pln"> inner_data</span><span class="pun">:</span><span class="pln">
                    formatted_output </span><span class="pun">+=</span><span class="pln"> f</span><span class="str">'\t\t\t"{key}": {inner_data[key]},\n'</span><span class="pln">
                formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n\t\t},\n"</span><span class="pln">
            formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n\t],\n"</span><span class="pln">
        formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n},\n"</span><span class="pln">
    </span><span class="com"># Remove the trailing comma and newline character for the last line</span><span class="pln">
    formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">[:-</span><span class="lit">2</span><span class="pun">]</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"}\n"</span><span class="pln">
    formatted_output </span><span class="pun">=</span><span class="pln"> formatted_output</span><span class="pun">.</span><span class="pln">replace</span><span class="pun">(</span><span class="str">"'"</span><span class="pun">,</span><span class="str">'"'</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> formatted_output

</span><span class="kwd">if</span><span class="pln"> __name__ </span><span class="pun">==</span><span class="pln"> </span><span class="str">"__main__"</span><span class="pun">:</span><span class="pln">
    parser </span><span class="pun">=</span><span class="pln"> argparse</span><span class="pun">.</span><span class="typ">ArgumentParser</span><span class="pun">(</span><span class="pln">description</span><span class="pun">=</span><span class="str">"Parse log file"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"file"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Path to the log file"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"--channel"</span><span class="pun">,</span><span class="pln"> default</span><span class="pun">=</span><span class="str">"100"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Channel name (default: [100])"</span><span class="pun">)</span><span class="pln">
    parser</span><span class="pun">.</span><span class="pln">add_argument</span><span class="pun">(</span><span class="str">"--player"</span><span class="pun">,</span><span class="pln"> default</span><span class="pun">=</span><span class="str">"Doctorje"</span><span class="pun">,</span><span class="pln"> help</span><span class="pun">=</span><span class="str">"Player name (default: Doctorje)"</span><span class="pun">)</span><span class="pln">
    args </span><span class="pun">=</span><span class="pln"> parser</span><span class="pun">.</span><span class="pln">parse_args</span><span class="pun">()</span><span class="pln">

    parse_log</span><span class="pun">(</span><span class="pln">args</span><span class="pun">.</span><span class="pln">file</span><span class="pun">,</span><span class="pln"> args</span><span class="pun">.</span><span class="pln">channel</span><span class="pun">,</span><span class="pln"> args</span><span class="pun">.</span><span class="pln">player</span><span class="pun">)</span></pre>

<p>
	 
</p>

<p>
	<strong>"How do I initialize this project?"</strong>
</p>

<ol>
	<li>
		I assume you are on linux and can get a basic PHP running on your own.
	</li>
	<li>
		sqlite3 better_map.db
	</li>
	<li>
		.read initialization_data/base_schema.sqlite_3
	</li>
	<li>
		.read initialization_data/3_10_data_import.sql
	</li>
	<li>
		cat initialization_data/mining_data_1
		<ol>
			<li>
				Press "Add Ores", paste in the JSON, submit.
			</li>
		</ol>
	</li>
	<li>
		cat initialization_data/mining_data_2
		<ol>
			<li>
				Press "Add Ores", paste in the JSON, submit.
			</li>
		</ol>
	</li>
	<li>
		Edit get_missing_item.php and put in your net-7 username/password. Yes I know that 'isn't secure'. This is a one-person app that I'm likely to be the only user of. It's fine for that. If you do it 'for real', then make it better.
		<ol>
			<li>
				Only needed if you want it to auto-fetch missing items (from Hulks) that are not currently in your DB.
			</li>
		</ol>
	</li>
	<li>
		You should be good to go.
		<ol>
			<li>
				The sector_data files are there as backups, in case the 3_10 import fails for some reason, or if you want to debug/test the JSON nav import feature.
			</li>
		</ol>
	</li>
</ol>

<p>
	 
</p>

<p>
	NOTE FOR 9_13_2025_backup.7z: This uses the same database as the 4_28 backup previously posted. if your database contains newer data, be sure to NOT overwrite it with better_map.db contained within!
</p>

<p>
	 
</p>
<p>
<a class="ipsAttachLink" href="https://forum.enb-emulator.com/applications/core/interface/file/attachment.php?id=4859&amp;key=19e41c37c4c5a8f3ede9cd3186fa1daf" data-fileExt='7z' data-fileid='4859' data-filekey='19e41c37c4c5a8f3ede9cd3186fa1daf'>9_13_2025_backup.7z</a></p>]]></description><guid isPermaLink="false">13482</guid><pubDate>Fri, 15 Mar 2024 21:12:58 +0000</pubDate></item><item><title>OL84 toon removed from Paramis sector</title><link>https://forum.enb-emulator.com/index.php?/topic/13673-ol84-toon-removed-from-paramis-sector/</link><description><![CDATA[<p>
	<span style="font-size:20px;">Hi,</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Could you (GMs) please clarify why my OL 84 character was removed from the Paramis sector? I understand the reasoning behind preventing high-level players from camping triggers, but in this case it was an alt I’m still leveling and not a toon that could realistically take on GoBB or the Controller.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">I’d really appreciate if the GM team could elaborate a bit more on the decision so I can better understand the rules and avoid issues in the future.</span>
</p>

<p>
	 
</p>

<p>
	<span style="font-size:20px;">Thanks in advance.</span>
</p>
]]></description><guid isPermaLink="false">13673</guid><pubDate>Sat, 30 Aug 2025 23:24:45 +0000</pubDate></item><item><title>Join us on Teamspeak!</title><link>https://forum.enb-emulator.com/index.php?/topic/90-join-us-on-teamspeak/</link><description><![CDATA[
<p>
	The EnbEmu has a teamspeak. Join it to chat with fellow enb players and developers.
</p>

<p>
	To use it, simply download the teamspeak client <a href="http://www.teamspeak.com/?page=downloads" rel="external nofollow">here</a>
</p>

<p>
	and enter the server address.
</p>

<p>
	We are using Teamspeak 3
</p>

<p>
	Server Address: TS.Net-7.org<s>:9987</s>
</p>

<p>
	<s>if that address doesn't work, try play.net-7.org:8760</s><br><br>
	--Kyp--<br>
	You should only need to direct client at 'ts.net-7.org' to connect now, TS has been repaired and is now fully functional behind the firewall.
</p>
]]></description><guid isPermaLink="false">90</guid><pubDate>Mon, 21 Dec 2009 12:32:25 +0000</pubDate></item><item><title>Most efficient Trade and Explore xp?</title><link>https://forum.enb-emulator.com/index.php?/topic/13634-most-efficient-trade-and-explore-xp/</link><description><![CDATA[<p>
	Just curious since I've been gone so long, what's the most efficient way to gain trade and exploration experience? I'm doing trade runs and exploring sectors I haven't been to, but I suspect the one is just the easy way to make trade xp, and the other will eventually dry up when there's nothing left to explore.
</p>

<p>
	 
</p>

<p>
	I don't care if it's something that costs me money, either. Trade runs bring in reliable income but I can make money, I'm looking for experience.
</p>

<p>
	 
</p>

<p>
	Thanks for any info <span><img alt=":)" data-emoticon="" height="20" src="https://forum.enb-emulator.com/uploads/emoticons/default_smile.png" srcset="https://forum.enb-emulator.com/uploads/emoticons/smile@2x.png 2x" title=":)" width="20" loading="lazy"></span>
</p>
]]></description><guid isPermaLink="false">13634</guid><pubDate>Tue, 06 May 2025 15:11:57 +0000</pubDate></item></channel></rss>
