├── #Compile#.bat ├── .gitignore ├── BuyLPI ├── BuyLPI.csproj ├── Program.cs └── Properties │ └── AssemblyInfo.cs ├── DirectEve └── DirectEve.dll ├── GoToBM ├── GoToBM.csproj ├── Program.cs ├── Properties │ └── AssemblyInfo.cs └── app.config ├── Questor.Modules ├── Action.cs ├── ActionState.cs ├── AgentInteraction.cs ├── AgentInteractionPurpose.cs ├── AgentInteractionState.cs ├── Ammo.cs ├── Arm.cs ├── ArmState.cs ├── Cache.cs ├── CategoryID.cs ├── CharSchedule.cs ├── Combat.cs ├── CombatState.cs ├── DamageType.cs ├── Defense.cs ├── DroneState.cs ├── Drones.cs ├── EntityCache.cs ├── Fitting.cs ├── GroupID.cs ├── InvType.cs ├── ItemCache.cs ├── Logging.cs ├── MissionController.cs ├── MissionControllerState.cs ├── MissionState.cs ├── ModuleCache.cs ├── Panic.cs ├── PanicState.cs ├── Priority.cs ├── PriorityTarget.cs ├── Properties │ └── AssemblyInfo.cs ├── Questor.Modules.csproj ├── Salvage.cs ├── SalvageState.cs ├── Settings.cs ├── ShipTargetValue.cs ├── Traveler.cs ├── TravelerDestination.cs ├── TravelerState.cs ├── UnloadLoot.cs └── UnloadLootState.cs ├── Questor.sln ├── Questor ├── Options.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Questor.cs ├── Questor.csproj ├── QuestorState.cs ├── Storylines │ ├── GenericCombatStoryline.cs │ ├── GenericCombatStorylineState.cs │ ├── IStoryline.cs │ ├── MaterialsForWarPreparation.cs │ ├── Storyline.cs │ ├── StorylineState.cs │ ├── TransactionDataDelivery.cs │ └── TransactionDataDeliveryState.cs ├── app.config ├── frmMain.Designer.cs ├── frmMain.cs └── frmMain.resx ├── QuestorManager ├── Actions │ ├── Buy.cs │ ├── BuyLPI.cs │ ├── Drop.cs │ ├── Grab.cs │ ├── InvType.cs │ ├── ItemCache.cs │ ├── Sell.cs │ ├── StateBuy.cs │ ├── StateBuyLPI.cs │ ├── StateDrop.cs │ ├── StateGrab.cs │ ├── StateSell.cs │ ├── ValueDump.cs │ └── ValueDumpState.cs ├── Common │ ├── DirectEve.cs │ └── Logging.cs ├── Domains │ ├── Category.cs │ └── Group.cs ├── Extensions │ └── DirectEveExtension.cs ├── ListItems.cs ├── ListViewColumnSorter.cs ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── Module │ ├── BookmarkDestination.cs │ ├── MissionBookmarkDestination.cs │ ├── SolarSystemDestination.cs │ ├── StationDestination.cs │ ├── Traveler.cs │ ├── TravelerDestination.cs │ └── TravelerState.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── QuestorManager.csproj └── State.cs ├── QuestorSettings ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── QuestorSettings.csproj └── app.config ├── QuestorStatistics ├── FrmMain.Designer.cs ├── FrmMain.cs ├── FrmMain.resx ├── ListViewColumnSorter.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── QuestorStatistics.csproj ├── QuestorStatistics.csproj.user └── app.config ├── UpdateInvTypes ├── InvType.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── UpdateInvTypes.csproj ├── frmMain.Designer.cs ├── frmMain.cs └── frmMain.resx ├── ValueDump ├── InvType.cs ├── ItemCache.cs ├── ListViewColumnSorter.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── ValueDump.csproj ├── ValueDumpState.cs ├── app.config ├── frmMain.Designer.cs ├── frmMain.cs └── frmMain.resx ├── credits.txt ├── license.htm └── output ├── Caldari L4 ├── Alluring Emanations.xml ├── Angel Extravaganza.xml ├── Attack of the Drones.xml ├── Cargo Delivery.xml ├── Covering Your Tracks.xml ├── Crowd Control.xml ├── Dread Pirate Scarlet.xml ├── Duo of Death.xml ├── Evolution.xml ├── Gone Berserk.xml ├── Guristas Extravaganza - copia.xml ├── Guristas Extravaganza.xml ├── Infiltrated Outposts.xml ├── Intercept The Saboteurs.xml ├── Recon (2 of 3).xml ├── Recon (3 of 3).xml ├── Record Cleaning.xml ├── Rogue Drone Harassment.xml ├── Shipyard Theft.xml ├── Silence The Informant.xml ├── Smuggler Interception.xml ├── Stop The Thief.xml ├── The Anomaly (1 of 3).xml ├── The Damsel In Distress - copia.xml ├── The Damsel In Distress.xml ├── The Right Hand of Zazzmatazz.xml ├── The Rogue Slave Trader (1 of 2).xml ├── The Wildcat Strike.xml ├── Unauthorized Military Presence.xml └── Worlds Collide.xml ├── Factions.xml ├── InvTypes.xml ├── Schedules.xml ├── Settings.xml └── ShipTargetValues.xml /#Compile#.bat: -------------------------------------------------------------------------------- 1 | del .\questor\bin\debug\*.* /Q 2 | del .\questor.modules\bin\debug\*.* /Q 3 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\gotobm\GoToBM.csproj 4 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\BuyLPI\BuyLPI.csproj 5 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\QuestorManager\QuestorManager.csproj 6 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\questor\Questor.csproj 7 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\Questor.Modules\Questor.Modules.csproj 8 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\updateinvtypes\UpdateInvTypes.csproj 9 | c:\Windows\Microsoft.NET\Framework\v3.5\msbuild .\valuedump\ValueDump.csproj 10 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild .\questorstatistics\QuestorStatistics.csproj 11 | C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild .\QuestorSettings\QuestorSettings.csproj 12 | mkdir output 13 | del .\output\*.exe /Q 14 | del .\output\*.dll /Q 15 | copy .\questor\bin\debug\*.exe .\output\*.exe 16 | copy .\questor\bin\debug\*.dll .\output\*.dll 17 | copy .\gotobm\bin\debug\*.exe .\output\*.exe 18 | copy .\questorstatistics\bin\debug\*.exe .\output\*.exe 19 | copy .\updateinvtypes\bin\debug\*.exe .\output\*.exe 20 | copy .\valuedump\bin\debug\*.exe .\output\*.exe 21 | copy .\BuyLPI\bin\debug\*.exe .\output\*.exe 22 | copy .\QuestorManager\bin\debug\*.exe .\output\*.exe 23 | copy .\QuestorSettings\bin\debug\*.exe .\output\*.exe 24 | pause -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #ignore thumbnails created by windows 3 | Thumbs.db 4 | #Ignore files build by Visual Studio 5 | *.obj 6 | *.exe 7 | *.pdb 8 | *.user 9 | *.aps 10 | *.pch 11 | *.vspscc 12 | *_i.c 13 | *_p.c 14 | *.ncb 15 | *.suo 16 | *.tlb 17 | *.tlh 18 | *.bak 19 | *.cache 20 | *.ilk 21 | *.log 22 | [Bb]in 23 | [Dd]ebug*/ 24 | *.lib 25 | *.sbr 26 | obj/ 27 | [Rr]elease*/ 28 | _ReSharper*/ 29 | [Tt]est[Rr]esult* -------------------------------------------------------------------------------- /BuyLPI/BuyLPI.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {ABCCE619-8340-4BE1-A241-2A7277FC433D} 9 | WinExe 10 | Properties 11 | BuyLPI 12 | BuyLPI 13 | v3.5 14 | 512 15 | 16 | 17 | x86 18 | true 19 | full 20 | false 21 | $(SolutionDir)bin\Debug\ 22 | TRACE;DEBUG 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | ..\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | ..\DirectEve\DirectEve.dll 40 | 41 | 42 | False 43 | ..\..\..\Program Files (x86)\Innerspace\Lavish.InnerSpace.dll 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 64 | -------------------------------------------------------------------------------- /BuyLPI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("BuyLPI")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("BuyLPI")] 13 | [assembly: AssemblyCopyright("Copyright © 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("f2820a71-d95d-473c-8b92-2b6cf72a728d")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /DirectEve/DirectEve.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SystemControl/Questor/ef620d14a9c2e25473e5bc3eed07673ce30650ee/DirectEve/DirectEve.dll -------------------------------------------------------------------------------- /GoToBM/GoToBM.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {8BD36F36-B7EB-47E7-AACF-66CBD74A4940} 9 | WinExe 10 | Properties 11 | GoToBM 12 | GoToBM 13 | v3.5 14 | 15 | 16 | 512 17 | 18 | 19 | x86 20 | false 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | false 28 | 29 | 30 | x86 31 | none 32 | true 33 | ..\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | false 38 | 39 | 40 | 41 | 42 | 43 | 44 | ..\DirectEve\DirectEve.dll 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | {0C0BE1A3-BA5B-41A1-B578-F20777D02304} 63 | Questor.Modules 64 | 65 | 66 | 67 | 74 | -------------------------------------------------------------------------------- /GoToBM/Program.cs: -------------------------------------------------------------------------------- 1 | /* Written by Noob536 */ 2 | using System; 3 | 4 | namespace GoToBM 5 | { 6 | using DirectEve; 7 | using global::Questor.Modules; 8 | 9 | static class Program 10 | { 11 | private static DirectEve _directEve; 12 | private static Traveler _traveler; 13 | private static DirectBookmark _bookmark; 14 | private static DateTime _lastPulse; 15 | private static bool _done = false; 16 | private static string _BM; 17 | private static bool _started = false; 18 | 19 | [STAThread] 20 | static void Main(string[] args) 21 | { 22 | Logging.Log("GoToBM: Started"); 23 | if (args.Length == 0 || args[0].Length < 1) 24 | { 25 | Logging.Log("GoToBM: You need to supply a bookmark name"); 26 | Logging.Log("GoToBM: Ended"); 27 | return; 28 | } 29 | _BM = args[0]; 30 | _BM = _BM.ToLower(); 31 | 32 | _directEve = new DirectEve(); 33 | Cache.Instance.DirectEve = _directEve; 34 | _directEve.OnFrame += OnFrame; 35 | _traveler = new Traveler(); 36 | 37 | while (!_done) 38 | { 39 | System.Threading.Thread.Sleep(50); 40 | } 41 | Logging.Log("GoToBM: Exiting"); 42 | return; 43 | } 44 | 45 | static void OnFrame(object sender, EventArgs e) 46 | { 47 | if (DateTime.Now.Subtract(_lastPulse).TotalMilliseconds < 1500) 48 | return; 49 | _lastPulse = DateTime.Now; 50 | 51 | // New frame, invalidate old cache 52 | Cache.Instance.InvalidateCache(); 53 | 54 | if (Cache.Instance.InWarp) 55 | return; 56 | 57 | if (!_started) 58 | { 59 | _started = true; 60 | if (!Cache.Instance.DirectEve.Session.IsReady) 61 | { 62 | 63 | Logging.Log("GoToBM: Not in game, exiting"); 64 | return; 65 | } 66 | Logging.Log("GoToBM: Attempting to find bookmark [" + _BM + "]"); 67 | foreach (var bookmark in Cache.Instance.DirectEve.Bookmarks) 68 | { 69 | if (bookmark.Title.ToLower().Equals(_BM)) 70 | { 71 | _bookmark = bookmark; 72 | break; 73 | } 74 | if (_bookmark == null && bookmark.Title.ToLower().Contains(_BM)) 75 | { 76 | _bookmark = bookmark; 77 | } 78 | } 79 | if (_bookmark == null) 80 | { 81 | Logging.Log("GoToBM: Bookmark not found"); 82 | _done = true; 83 | return; 84 | } 85 | _traveler.Destination = new BookmarkDestination(_bookmark); 86 | } 87 | _traveler.ProcessState(); 88 | if (_traveler.State == TravelerState.AtDestination) 89 | { 90 | _done = true; 91 | Logging.Log("GoToBM: At destination"); 92 | } 93 | else if (_traveler.State == TravelerState.Error) 94 | { 95 | Logging.Log("GoToBM: Traveler error"); 96 | _done = true; 97 | } 98 | } 99 | } 100 | } -------------------------------------------------------------------------------- /GoToBM/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("GoToBM")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("GoToBM")] 13 | [assembly: AssemblyCopyright("Copyright © 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("ab810fe9-631d-47e0-bc46-906d94516b7b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /GoToBM/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Questor.Modules/Action.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System.Collections.Generic; 13 | using System.Linq; 14 | 15 | public class Action 16 | { 17 | public Action() 18 | { 19 | Parameters = new Dictionary>(); 20 | } 21 | 22 | public ActionState State { get; set; } 23 | public Dictionary> Parameters { get; private set; } 24 | 25 | public void AddParameter(string parameter, string value) 26 | { 27 | if (string.IsNullOrEmpty(parameter) || string.IsNullOrEmpty(value)) 28 | return; 29 | 30 | List values; 31 | if (!Parameters.TryGetValue(parameter.ToLower(), out values)) 32 | values = new List(); 33 | 34 | values.Add(value); 35 | Parameters[parameter.ToLower()] = values; 36 | } 37 | 38 | public string GetParameterValue(string parameter) 39 | { 40 | List values; 41 | if (!Parameters.TryGetValue(parameter.ToLower(), out values)) 42 | return null; 43 | 44 | return values.FirstOrDefault(); 45 | } 46 | 47 | public List GetParameterValues(string parameter) 48 | { 49 | List values; 50 | if (!Parameters.TryGetValue(parameter.ToLower(), out values)) 51 | return new List(); 52 | 53 | return values; 54 | } 55 | 56 | public override string ToString() 57 | { 58 | var output = State.ToString(); 59 | 60 | foreach (var key in Parameters.Keys) 61 | foreach (var value in Parameters[key]) 62 | output += string.Format(" [{0}: {1}]", key, value); 63 | 64 | return output; 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /Questor.Modules/ActionState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum ActionState 13 | { 14 | MoveTo, 15 | Activate, 16 | WaitUntilTargeted, 17 | ClearPocket, 18 | Kill, 19 | Ignore, 20 | Loot, 21 | LootItem, 22 | Done, 23 | SalvageBookmark 24 | } 25 | } -------------------------------------------------------------------------------- /Questor.Modules/AgentInteractionPurpose.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum AgentInteractionPurpose 13 | { 14 | StartMission, 15 | CompleteMission, 16 | AmmoCheck 17 | } 18 | } -------------------------------------------------------------------------------- /Questor.Modules/AgentInteractionState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum AgentInteractionState 13 | { 14 | Idle, 15 | StartConversation, 16 | WaitForConversation, 17 | ReplyToAgent, 18 | CloseConversation, 19 | Done, 20 | UnexpectedDialogOptions, 21 | WaitForMission, 22 | AcceptMission, 23 | DeclineMission 24 | } 25 | } -------------------------------------------------------------------------------- /Questor.Modules/Ammo.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System; 13 | using System.Xml.Linq; 14 | 15 | public class Ammo 16 | { 17 | public Ammo() 18 | { 19 | } 20 | 21 | public Ammo(XElement ammo) 22 | { 23 | TypeId = (int) ammo.Attribute("typeId"); 24 | DamageType = (DamageType) Enum.Parse(typeof (DamageType), (string) ammo.Attribute("damageType")); 25 | Range = (int) ammo.Attribute("range"); 26 | Quantity = (int) ammo.Attribute("quantity"); 27 | } 28 | 29 | public int TypeId { get; private set; } 30 | public DamageType DamageType { get; private set; } 31 | public int Range { get; private set; } 32 | public int Quantity { get; set; } 33 | 34 | public Ammo Clone() 35 | { 36 | var ammo = new Ammo(); 37 | ammo.TypeId = TypeId; 38 | ammo.DamageType = DamageType; 39 | ammo.Range = Range; 40 | ammo.Quantity = Quantity; 41 | return ammo; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Questor.Modules/ArmState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum ArmState 13 | { 14 | Idle, 15 | Begin, 16 | OpenShipHangar, 17 | ActivateCombatShip, 18 | OpenItemHangar, 19 | OpenCorpHangar, 20 | OpenCargo, 21 | OpenDroneBay, 22 | MoveDrones, 23 | MoveItems, 24 | WaitForItems, 25 | Done, 26 | SwitchToSalvageShip, 27 | ActivateSalvageShip, 28 | NotEnoughAmmo, 29 | WaitForFitting, 30 | OpenFittingWindow, 31 | WaitForFittingWindow, 32 | ChoseFitting, 33 | 34 | } 35 | } -------------------------------------------------------------------------------- /Questor.Modules/CategoryID.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum CategoryID 13 | { 14 | System = 0, 15 | Owner = 1, 16 | Celestial = 2, 17 | Station = 3, 18 | Material = 4, 19 | Accessories = 5, 20 | Ship = 6, 21 | Module = 7, 22 | Charge = 8, 23 | Blueprint = 9, 24 | Trading = 10, 25 | Entity = 11, 26 | Bonus = 14, 27 | Skill = 16, 28 | Commodity = 17, 29 | Drone = 18, 30 | Implant = 20, 31 | Deployable = 22, 32 | Structure = 23, 33 | Reaction = 24, 34 | Asteroid = 25, 35 | } 36 | } -------------------------------------------------------------------------------- /Questor.Modules/CharSchedule.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | 11 | 12 | namespace Questor.Modules 13 | { 14 | using System.Xml.Linq; 15 | using System.Globalization; 16 | using Questor.Modules; 17 | using System; 18 | //using System.Windows.Forms; 19 | 20 | public class CharSchedule 21 | { 22 | public CharSchedule(XElement element) 23 | { 24 | CultureInfo enUS = new CultureInfo("en-US"); 25 | User = (string)element.Attribute("user"); 26 | PW = (string)element.Attribute("pw"); 27 | Name = (string)element.Attribute("name"); 28 | 29 | stopTimeSpecified = false; 30 | startTimeSpecified = false; 31 | string _start = (string)element.Attribute("start"); 32 | string _stop = (string)element.Attribute("stop"); 33 | DateTime _startTime = new DateTime(); 34 | DateTime _stopTime = new DateTime(); 35 | if (_start != null) 36 | { 37 | if (!DateTime.TryParseExact(_start, "HH:mm", enUS, DateTimeStyles.None, out _startTime)) 38 | { 39 | Logging.Log("[CharSchedule] " + Name + ": Couldn't parse starttime."); 40 | _startTime = DateTime.Now.AddSeconds(20); 41 | } 42 | else 43 | startTimeSpecified = true; 44 | } 45 | else 46 | { 47 | //Logging.Log("[CharSchedule] No start time specified. Starting now."); 48 | _startTime = DateTime.Now.AddSeconds(20); 49 | } 50 | Start = _startTime; 51 | 52 | if (_stop != null) 53 | { 54 | if (!DateTime.TryParseExact(_stop, "HH:mm", enUS, DateTimeStyles.None, out _stopTime)) 55 | { 56 | Logging.Log("[CharSchedule] " + Name + ": Couldn't parse stoptime."); 57 | _stopTime = DateTime.Now.AddHours(24); 58 | } 59 | else 60 | stopTimeSpecified = true; 61 | } 62 | else 63 | { 64 | //Logging.Log("[CharSchedule] No stop time specified."); 65 | _stopTime = DateTime.Now.AddHours(24); 66 | } 67 | Stop = _stopTime; 68 | 69 | if ((string)element.Attribute("runtime") != null) 70 | { 71 | RunTime = (double)element.Attribute("runtime"); 72 | stopTimeSpecified = true; 73 | } 74 | else 75 | RunTime = -1; 76 | } 77 | 78 | 79 | 80 | public string User { get; private set; } 81 | public string PW { get; private set; } 82 | public string Name { get; private set; } 83 | public DateTime Start { get; set; } 84 | public DateTime Stop { get; set; } 85 | public double RunTime { get; set; } 86 | public bool stopTimeSpecified { get; set; } 87 | public bool startTimeSpecified { get; set; } 88 | } 89 | } -------------------------------------------------------------------------------- /Questor.Modules/CombatState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum CombatState 13 | { 14 | CheckTargets, 15 | KillTargets, 16 | OutOfAmmo 17 | } 18 | } -------------------------------------------------------------------------------- /Questor.Modules/DamageType.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum DamageType 13 | { 14 | EM, 15 | Kinetic, 16 | Thermal, 17 | Explosive 18 | } 19 | } -------------------------------------------------------------------------------- /Questor.Modules/DroneState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum DroneState 13 | { 14 | WaitingForTargets, 15 | Launch, 16 | Launching, 17 | Fighting, 18 | Recalling, 19 | OutOfDrones 20 | } 21 | } -------------------------------------------------------------------------------- /Questor.Modules/Fitting.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System; 13 | using System.Xml.Linq; 14 | 15 | public class FactionFitting 16 | { 17 | public FactionFitting() 18 | { 19 | } 20 | 21 | public FactionFitting(XElement factionfitting) 22 | { 23 | Faction = (string)factionfitting.Attribute("faction") ?? ""; 24 | Fitting = (string)factionfitting.Attribute("fitting") ?? ""; 25 | } 26 | 27 | public string Faction { get; private set; } 28 | public string Fitting { get; private set; } 29 | } 30 | 31 | public class MissionFitting 32 | { 33 | public MissionFitting() 34 | { 35 | } 36 | 37 | public MissionFitting(XElement missionfitting) 38 | { 39 | Mission = (string)missionfitting.Attribute("mission") ?? ""; 40 | Faction = (string)missionfitting.Attribute("faction") ?? "Default"; 41 | Fitting = (string)missionfitting.Attribute("fitting") ?? ""; 42 | Ship = (string)missionfitting.Attribute("ship") ?? ""; 43 | } 44 | 45 | public string Mission { get; private set; } 46 | public string Faction { get; private set; } 47 | public string Fitting { get; private set; } 48 | public string Ship { get; private set; } 49 | } 50 | } -------------------------------------------------------------------------------- /Questor.Modules/GroupID.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum Group 13 | { 14 | Star = 6, 15 | Station = 15, 16 | Stargate = 10, 17 | 18 | Capsule = 29, 19 | 20 | // Note: This includes microwarpdrives as well! 21 | Afterburner = 46, 22 | 23 | ShieldBoosters = 40, 24 | ShieldHardeners = 77, 25 | ArmorRepairer = 62, 26 | ArmorHardeners = 328, 27 | DamageControl = 60, 28 | ECCM = 202, 29 | 30 | SensorBooster = 212, 31 | TrackingComputer = 213, 32 | 33 | CapacitorGroupCharge = 87, 34 | CriminalTags = 370, 35 | EmpireInsigniaDrops = 409, 36 | 37 | StasisWeb = 65, 38 | nos = 68, 39 | TargetPainter = 379, 40 | 41 | EnergyWeapon = 53, 42 | ProjectileWeapon = 55, 43 | HybridWeapon = 74, 44 | 45 | SentryGun = 99, 46 | ProtectiveSentryGun = 180, 47 | MobileSentryGun = 336, 48 | DestructibleSentryGun = 383, 49 | MobileMissileSentry = 417, 50 | MobileProjectileSentry = 426, 51 | MobileLaserSentry = 430, 52 | StasisWebificationBattery = 441, 53 | MobileHybridSentry = 449, 54 | DeadspaceOverseersSentry = 495, 55 | EnergyNeutralizingBattery = 837, 56 | 57 | LargeCollidableStructure = 319, 58 | 59 | CargoContainer = 12, 60 | SpawnContainer = 306, 61 | SecureContainer = 340, 62 | AuditLogSecureContainer = 448, 63 | FreightContainer = 649, 64 | MissionContainer = 952, 65 | 66 | SiegeMissileLaunchers = 508, 67 | CruiseMissileLaunchers = 506, 68 | 69 | Wreck = 186, 70 | 71 | ConcordDrone = 301, 72 | CustomsOfficial = 446, 73 | Billboard = 323, 74 | 75 | Frigate = 25, 76 | AssaultShip = 324, 77 | Destroyer = 420, 78 | Interdictor = 541, 79 | Interceptor = 831, 80 | StealthBomber = 834, 81 | ElectronicAttackShip = 893, 82 | PrototypeExplorationShip = 1022, 83 | 84 | Cruiser = 26, 85 | HeavyAssaultShip = 358, 86 | Logistics = 832, 87 | ForceReconShip = 833, 88 | CombatReconShip = 906, 89 | HeavyInterdictor = 894, 90 | 91 | Battlecruiser = 419, 92 | CommandShip = 540, 93 | StrategicCruiser = 963, 94 | 95 | Battleship = 27, 96 | EliteBattleship = 381, 97 | BlackOps = 898, 98 | Marauder = 900, 99 | 100 | } 101 | } -------------------------------------------------------------------------------- /Questor.Modules/InvType.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System; 13 | using System.Xml.Linq; 14 | 15 | public class InvType 16 | { 17 | public InvType(XElement element) 18 | { 19 | Id = (int) element.Attribute("id"); 20 | Name = (string) element.Attribute("name"); 21 | GroupId = (int) element.Attribute("groupid"); 22 | BasePrice = (double) element.Attribute("baseprice"); 23 | Volume = (double) element.Attribute("volume"); 24 | Capacity = (double) element.Attribute("capacity"); 25 | PortionSize = (double) element.Attribute("portionsize"); 26 | MedianBuy = (double?) element.Attribute("medianbuy"); 27 | MedianSell = (double?) element.Attribute("mediansell"); 28 | MedianAll = (double?) element.Attribute("medianall"); 29 | LastUpdate = (DateTime?) element.Attribute("lastupdate"); 30 | } 31 | 32 | public InvType(ItemCache item) 33 | { 34 | Id = item.TypeId; 35 | Name = item.Name; 36 | GroupId = item.GroupID; 37 | Volume = item.Volume; 38 | } 39 | 40 | public int Id { get; set; } 41 | public string Name { get; set; } 42 | public int GroupId { get; set; } 43 | public double BasePrice { get; set; } 44 | public double Volume { get; set; } 45 | public double Capacity { get; set; } 46 | public double PortionSize { get; set; } 47 | public double? MedianSell { get; set; } 48 | public double? MedianBuy { get; set; } 49 | public double? MedianAll { get; set; } 50 | public DateTime? LastUpdate { get; set; } 51 | 52 | public XElement Save() 53 | { 54 | var element = new XElement("invtype"); 55 | element.SetAttributeValue("id", Id); 56 | element.SetAttributeValue("name", Name); 57 | element.SetAttributeValue("groupid", GroupId); 58 | element.SetAttributeValue("baseprice", BasePrice); 59 | element.SetAttributeValue("volume", Volume); 60 | element.SetAttributeValue("capacity", Capacity); 61 | element.SetAttributeValue("portionsize", PortionSize); 62 | element.SetAttributeValue("medianbuy", MedianBuy); 63 | element.SetAttributeValue("mediansell", MedianSell); 64 | element.SetAttributeValue("medianall", MedianAll); 65 | element.SetAttributeValue("lastupdate", LastUpdate); 66 | return element; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Questor.Modules/ItemCache.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using DirectEve; 13 | 14 | public class ItemCache 15 | { 16 | private DirectItem _directItem; 17 | 18 | public ItemCache(DirectItem item) 19 | { 20 | _directItem = item; 21 | } 22 | 23 | public DirectItem DirectItem 24 | { 25 | get { return _directItem; } 26 | } 27 | 28 | public long Id 29 | { 30 | get { return _directItem.ItemId; } 31 | } 32 | 33 | public int TypeId 34 | { 35 | get { return _directItem.TypeId; } 36 | } 37 | 38 | public int GroupID 39 | { 40 | get { return _directItem.GroupId; } 41 | } 42 | 43 | public int Quantity 44 | { 45 | get { return _directItem.Quantity; } 46 | } 47 | 48 | public bool IsContraband 49 | { 50 | get 51 | { 52 | if (GroupID == 313) return true; // Drugs 53 | if (GroupID == 282) return true; // Toxic Waste 54 | if (GroupID == 283) return true; // Slaves 55 | if (GroupID == 280) return true; // Small Arms 56 | if (GroupID == 284) return true; // Ectoplasm 57 | return false; 58 | } 59 | } 60 | 61 | public string Name 62 | { 63 | get { return _directItem.TypeName; } 64 | } 65 | 66 | public double Volume 67 | { 68 | get { return _directItem.Volume; } 69 | } 70 | 71 | public double TotalVolume 72 | { 73 | get { return InvType.Volume*Quantity; } 74 | } 75 | 76 | public InvType InvType 77 | { 78 | get 79 | { 80 | // Create a new InvType if its unknown 81 | if (!Cache.Instance.InvTypesById.ContainsKey(TypeId)) 82 | { 83 | Logging.Log("ItemCache: Unknown TypeID for [" + Name + "][" + TypeId + "]"); 84 | Cache.Instance.InvTypesById[TypeId] = new InvType(this); 85 | } 86 | 87 | return Cache.Instance.InvTypesById[TypeId]; 88 | } 89 | } 90 | 91 | public double? IskPerM3 92 | { 93 | get 94 | { 95 | if (InvType.MedianBuy == null) 96 | return null; 97 | 98 | return InvType.MedianBuy/InvType.Volume; 99 | } 100 | } 101 | } 102 | } -------------------------------------------------------------------------------- /Questor.Modules/Logging.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System; 13 | using InnerSpaceAPI; 14 | 15 | public static class Logging 16 | { 17 | public static void Log(string line) 18 | { 19 | InnerSpace.Echo(string.Format("{0:HH:mm:ss} {1}", DateTime.Now, line)); 20 | Cache.Instance.ExtConsole += string.Format("{0:HH:mm:ss} {1}", DateTime.Now, line + "\r\n"); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Questor.Modules/MissionControllerState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum MissionControllerState 13 | { 14 | Idle, 15 | Start, 16 | Done, 17 | LoadPocket, 18 | NextPocket, 19 | ExecutePocketActions, 20 | Error 21 | } 22 | } -------------------------------------------------------------------------------- /Questor.Modules/MissionState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum MissionState 13 | { 14 | Offered = 1, 15 | Accepted = 2 16 | } 17 | } -------------------------------------------------------------------------------- /Questor.Modules/PanicState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum PanicState 13 | { 14 | Normal, 15 | StartPanicking, 16 | Panicking, 17 | Panic, 18 | Resume, 19 | Repair, 20 | DelayedResume, 21 | } 22 | } -------------------------------------------------------------------------------- /Questor.Modules/Priority.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum Priority 13 | { 14 | WarpScrambler = 0, 15 | Webbing = 1, 16 | TargetPainting = 2, 17 | Neutralizing = 3, 18 | Jamming = 4, 19 | Dampening = 5, 20 | TrackingDisrupting = 6, 21 | PriorityKillTarget = 7 22 | } 23 | } -------------------------------------------------------------------------------- /Questor.Modules/PriorityTarget.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public class PriorityTarget 13 | { 14 | private EntityCache _entity; 15 | public long EntityID { get; set; } 16 | public Priority Priority { get; set; } 17 | 18 | public EntityCache Entity 19 | { 20 | get 21 | { 22 | if (_entity == null) 23 | _entity = Cache.Instance.EntityById(EntityID); 24 | 25 | return _entity; 26 | } 27 | } 28 | 29 | public void ClearCache() 30 | { 31 | _entity = null; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Questor.Modules/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | 17 | [assembly: AssemblyTitle("Questor.Modules")] 18 | [assembly: AssemblyDescription("")] 19 | [assembly: AssemblyConfiguration("")] 20 | [assembly: AssemblyCompany("Microsoft")] 21 | [assembly: AssemblyProduct("Questor.Modules")] 22 | [assembly: AssemblyCopyright("Copyright © Microsoft 2010")] 23 | [assembly: AssemblyTrademark("")] 24 | [assembly: AssemblyCulture("")] 25 | 26 | // Setting ComVisible to false makes the types in this assembly not visible 27 | // to COM components. If you need to access a type in this assembly from 28 | // COM, set the ComVisible attribute to true on that type. 29 | 30 | [assembly: ComVisible(false)] 31 | 32 | // The following GUID is for the ID of the typelib if this project is exposed to COM 33 | 34 | [assembly: Guid("ab86c49e-eec1-4146-b6b5-150cfa1f58c1")] 35 | 36 | // Version information for an assembly consists of the following four values: 37 | // 38 | // Major Version 39 | // Minor Version 40 | // Build Number 41 | // Revision 42 | // 43 | // You can specify all the values or you can default the Build and Revision Numbers 44 | // by using the '*' as shown below: 45 | // [assembly: AssemblyVersion("1.0.*")] 46 | 47 | [assembly: AssemblyVersion("1.0.0.0")] 48 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /Questor.Modules/Questor.Modules.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 8.0.30703 7 | 2.0 8 | {0C0BE1A3-BA5B-41A1-B578-F20777D02304} 9 | Library 10 | Properties 11 | Questor.Modules 12 | Questor.Modules 13 | v3.5 14 | 512 15 | 16 | 17 | full 18 | false 19 | $(SolutionDir)bin\Debug\ 20 | TRACE;DEBUG;UseDirectEve 21 | prompt 22 | 4 23 | false 24 | 25 | 26 | none 27 | true 28 | ..\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | false 33 | 34 | 35 | 36 | False 37 | ..\DirectEve\DirectEve.dll 38 | 39 | 40 | False 41 | ..\..\..\Program Files (x86)\Innerspace\Lavish.InnerSpace.dll 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 101 | -------------------------------------------------------------------------------- /Questor.Modules/SalvageState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum SalvageState 13 | { 14 | TargetWrecks, 15 | SalvageWrecks, 16 | LootWrecks, 17 | StackItems, 18 | WaitForStacking 19 | } 20 | } -------------------------------------------------------------------------------- /Questor.Modules/ShipTargetValue.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System.Xml.Linq; 13 | 14 | public class ShipTargetValue 15 | { 16 | public ShipTargetValue(XElement element) 17 | { 18 | Name = (string) element.Attribute("name"); 19 | GroupId = (int) element.Attribute("groupid"); 20 | TargetValue = (int) element.Attribute("targetvalue"); 21 | } 22 | 23 | public string Name { get; private set; } 24 | public int GroupId { get; private set; } 25 | public int TargetValue { get; private set; } 26 | } 27 | } -------------------------------------------------------------------------------- /Questor.Modules/Traveler.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | using System; 13 | using System.Linq; 14 | using DirectEve; 15 | 16 | public class Traveler 17 | { 18 | private TravelerDestination _destination; 19 | private DateTime _nextAction; 20 | 21 | public TravelerState State { get; set; } 22 | 23 | public TravelerDestination Destination 24 | { 25 | get { return _destination; } 26 | set 27 | { 28 | _destination = value; 29 | State = TravelerState.Idle; 30 | } 31 | } 32 | 33 | /// 34 | /// Navigate to a solar system 35 | /// 36 | /// 37 | private void NagivateToBookmarkSystem(long solarSystemId) 38 | { 39 | if (_nextAction > DateTime.Now) 40 | return; 41 | 42 | var destination = Cache.Instance.DirectEve.Navigation.GetDestinationPath(); 43 | if (destination.Count == 0 || !destination.Any(d => d == solarSystemId)) 44 | { 45 | // We do not have the destination set 46 | var location = Cache.Instance.DirectEve.Navigation.GetLocation(solarSystemId); 47 | if (location.IsValid) 48 | { 49 | Logging.Log("Traveler: Setting destination to [" + location.Name + "]"); 50 | location.SetDestination(); 51 | } 52 | else 53 | { 54 | Logging.Log("Traveler: Error setting solar system destination [" + solarSystemId + "]"); 55 | State = TravelerState.Error; 56 | } 57 | 58 | return; 59 | } 60 | else 61 | { 62 | if (!Cache.Instance.InSpace) 63 | { 64 | if (Cache.Instance.InStation) 65 | { 66 | Cache.Instance.DirectEve.ExecuteCommand(DirectCmd.CmdExitStation); 67 | _nextAction = DateTime.Now.AddSeconds(30); 68 | } 69 | 70 | // We are not yet in space, wait for it 71 | return; 72 | } 73 | 74 | // Find the first waypoint 75 | var waypoint = destination.First(); 76 | 77 | // Get the name of the next system 78 | var locationName = Cache.Instance.DirectEve.Navigation.GetLocationName(waypoint); 79 | 80 | // Find the stargate associated with it 81 | var entities = Cache.Instance.EntitiesByName("Stargate (" + locationName + ")"); 82 | if (entities.Count() == 0) 83 | { 84 | // not found, that cant be true?!?!?!?! 85 | Logging.Log("Traveler: Error [Stargate (" + locationName + ")] not found, most likely lag waiting 15 seconds."); 86 | _nextAction = DateTime.Now.AddSeconds(15); 87 | return; 88 | } 89 | 90 | // Warp to, approach or jump the stargate 91 | var entity = entities.First(); 92 | if (entity.Distance < 2500) 93 | { 94 | Logging.Log("Traveler: Jumping to [" + locationName + "]"); 95 | entity.Jump(); 96 | 97 | _nextAction = DateTime.Now.AddSeconds(15); 98 | } 99 | else if (entity.Distance < 150000) 100 | entity.Approach(); 101 | else 102 | { 103 | Logging.Log("Traveler: Warping to [Stargate (" + locationName + ")]"); 104 | entity.WarpTo(); 105 | 106 | _nextAction = DateTime.Now.AddSeconds(5); 107 | } 108 | } 109 | } 110 | 111 | public void ProcessState() 112 | { 113 | switch (State) 114 | { 115 | case TravelerState.Idle: 116 | State = TravelerState.Traveling; 117 | break; 118 | 119 | case TravelerState.Traveling: 120 | if (Destination == null) 121 | { 122 | State = TravelerState.Error; 123 | break; 124 | } 125 | 126 | if (Destination.SolarSystemId != Cache.Instance.DirectEve.Session.SolarSystemId) 127 | NagivateToBookmarkSystem(Destination.SolarSystemId); 128 | else if (Destination.PerformFinalDestinationTask()) 129 | State = TravelerState.AtDestination; 130 | break; 131 | 132 | default: 133 | break; 134 | } 135 | } 136 | } 137 | } -------------------------------------------------------------------------------- /Questor.Modules/TravelerState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum TravelerState 13 | { 14 | Idle, 15 | Traveling, 16 | AtDestination, 17 | Error 18 | } 19 | } -------------------------------------------------------------------------------- /Questor.Modules/UnloadLootState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor.Modules 11 | { 12 | public enum UnloadLootState 13 | { 14 | Idle, 15 | Begin, 16 | OpenItemHangar, 17 | OpenShipsCargo, 18 | OpenCorpHangar, 19 | MoveLoot, 20 | WaitForMove, 21 | StackItemsHangar, 22 | StackItemsCorpAmmo, 23 | StackItemsCorpLoot, 24 | WaitForStacking, 25 | Done, 26 | MoveAmmo, 27 | } 28 | } -------------------------------------------------------------------------------- /Questor/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Questor")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("Questor")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("3ec988e7-512a-4bf3-b0d2-993f97da4e9d")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Questor/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Questor.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Questor.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Questor/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Questor.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Questor/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Questor/QuestorState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace Questor 11 | { 12 | public enum QuestorState 13 | { 14 | Idle, 15 | DelayedStart, 16 | Start, 17 | Arm, 18 | WarpOutStation, 19 | GotoMission, 20 | ExecuteMission, 21 | DelayedGotoBase, 22 | GotoBase, 23 | CompleteMission, 24 | UnloadLoot, 25 | BeginAfterMissionSalvaging, 26 | GotoSalvageBookmark, 27 | SalvageUseGate, 28 | SalvageNextPocket, 29 | Salvage, 30 | Error, 31 | Panic, 32 | StorylinePanic, 33 | CombatHelper, 34 | Traveler, 35 | Storyline 36 | } 37 | } -------------------------------------------------------------------------------- /Questor/Storylines/GenericCombatStorylineState.cs: -------------------------------------------------------------------------------- 1 | namespace Questor.Storylines 2 | { 3 | public enum GenericCombatStorylineState 4 | { 5 | GotoMission, 6 | ExecuteMission, 7 | } 8 | } -------------------------------------------------------------------------------- /Questor/Storylines/IStoryline.cs: -------------------------------------------------------------------------------- 1 | namespace Questor.Storylines 2 | { 3 | public interface IStoryline 4 | { 5 | StorylineState Arm(Storyline storyline); 6 | StorylineState PreAcceptMission(Storyline storyline); 7 | StorylineState ExecuteMission(Storyline storyline); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Questor/Storylines/StorylineState.cs: -------------------------------------------------------------------------------- 1 | namespace Questor.Storylines 2 | { 3 | public enum StorylineState 4 | { 5 | Idle, 6 | Arm, 7 | GotoAgent, 8 | PreAcceptMission, 9 | AcceptMission, 10 | ExecuteMission, 11 | CompleteMission, 12 | Done, 13 | BlacklistAgent, 14 | BringSpoilsOfWar, 15 | ReturnToAgent 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Questor/Storylines/TransactionDataDeliveryState.cs: -------------------------------------------------------------------------------- 1 | namespace Questor.Storylines 2 | { 3 | public enum TransactionDataDeliveryState 4 | { 5 | GotoPickupLocation, 6 | PickupItem, 7 | GotoDropOffLocation, 8 | DropOffItem 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Questor/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /QuestorManager/Actions/Buy.cs: -------------------------------------------------------------------------------- 1 | namespace QuestorManager.Actions 2 | { 3 | 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using DirectEve; 9 | using DirectEve = global::QuestorManager.Common.DirectEve; 10 | using global::QuestorManager.Common; 11 | using global::QuestorManager.Domains; 12 | using global::QuestorManager.Module; 13 | 14 | 15 | class Buy 16 | { 17 | public StateBuy State { get; set; } 18 | 19 | public int Item { get; set; } 20 | public int Unit { get; set; } 21 | 22 | private DateTime _lastAction; 23 | 24 | private bool ReturnBuy; 25 | 26 | 27 | 28 | 29 | 30 | public void ProcessState() 31 | { 32 | var marketWindow = DirectEve.Instance.Windows.OfType().FirstOrDefault(); 33 | 34 | switch (State) 35 | { 36 | case StateBuy.Idle: 37 | case StateBuy.Done: 38 | break; 39 | 40 | case StateBuy.Begin: 41 | 42 | // Close the market window if there is one 43 | if (marketWindow != null) 44 | marketWindow.Close(); 45 | State = StateBuy.OpenMarket; 46 | break; 47 | 48 | case StateBuy.OpenMarket: 49 | 50 | 51 | // Close the market window if there is one 52 | //if (marketWindow != null) 53 | // marketWindow.Close(); 54 | 55 | if (marketWindow == null) 56 | { 57 | DirectEve.Instance.ExecuteCommand(DirectCmd.OpenMarket); 58 | break; 59 | } 60 | 61 | 62 | if (!marketWindow.IsReady) 63 | break; 64 | 65 | 66 | Logging.Log("Buy: Opening Market"); 67 | State = StateBuy.LoadItem; 68 | 69 | break; 70 | 71 | case StateBuy.LoadItem: 72 | 73 | _lastAction = DateTime.Now; 74 | 75 | if (marketWindow.DetailTypeId != Item) 76 | { 77 | marketWindow.LoadTypeId(Item); 78 | State = StateBuy.BuyItem; 79 | 80 | break; 81 | } 82 | 83 | 84 | break; 85 | 86 | case StateBuy.BuyItem: 87 | 88 | if (DateTime.Now.Subtract(_lastAction).TotalSeconds < 5) 89 | break; 90 | 91 | 92 | var orders = marketWindow.SellOrders.Where(o => o.StationId == DirectEve.Instance.Session.StationId); 93 | 94 | var order = orders.OrderBy(o => o.Price).FirstOrDefault(); 95 | if (order != null) 96 | { 97 | // Calculate how much kernite we still need 98 | if (order.VolumeEntered >= Unit) 99 | { 100 | order.Buy(Unit, DirectOrderRange.Station); 101 | State = StateBuy.WaitForItems; 102 | } 103 | else 104 | { 105 | order.Buy(Unit, DirectOrderRange.Station); 106 | Unit = Unit - order.VolumeEntered; 107 | Logging.Log("Missing " + Convert.ToString(Unit) + " units"); 108 | ReturnBuy = true; 109 | State = StateBuy.WaitForItems; 110 | } 111 | 112 | } 113 | 114 | break; 115 | 116 | case StateBuy.WaitForItems: 117 | // Wait 5 seconds after moving 118 | if (DateTime.Now.Subtract(_lastAction).TotalSeconds < 5) 119 | break; 120 | 121 | // Close the market window if there is one 122 | if (marketWindow != null) 123 | marketWindow.Close(); 124 | 125 | if (ReturnBuy == true) 126 | { 127 | Logging.Log("Buy: Return Buy"); 128 | ReturnBuy = false; 129 | State = StateBuy.OpenMarket; 130 | break; 131 | } 132 | 133 | Logging.Log("Buy: Done"); 134 | State = StateBuy.Done; 135 | 136 | 137 | 138 | break; 139 | 140 | } 141 | 142 | 143 | } 144 | 145 | 146 | 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /QuestorManager/Actions/InvType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Xml.Linq; 6 | 7 | namespace QuestorManager.Actions 8 | { 9 | public class InvType 10 | { 11 | public InvType(XElement element) 12 | { 13 | Id = (int)element.Attribute("id"); 14 | Name = (string)element.Attribute("name"); 15 | GroupId = (int)element.Attribute("groupid"); 16 | BasePrice = (double)element.Attribute("baseprice"); 17 | Volume = (double)element.Attribute("volume"); 18 | Capacity = (double)element.Attribute("capacity"); 19 | PortionSize = (double)element.Attribute("portionsize"); 20 | MedianBuy = (double?)element.Attribute("medianbuy"); 21 | MedianSell = (double?)element.Attribute("mediansell"); 22 | MedianAll = (double?)element.Attribute("medianall"); 23 | LastUpdate = (DateTime?)element.Attribute("lastupdate"); 24 | } 25 | 26 | public XElement Save() 27 | { 28 | var element = new XElement("invtype"); 29 | element.SetAttributeValue("id", Id); 30 | element.SetAttributeValue("name", Name); 31 | element.SetAttributeValue("groupid", GroupId); 32 | element.SetAttributeValue("baseprice", BasePrice); 33 | element.SetAttributeValue("volume", Volume); 34 | element.SetAttributeValue("capacity", Capacity); 35 | element.SetAttributeValue("portionsize", PortionSize); 36 | if (MedianBuy.HasValue && MedianBuy.Value > 0) 37 | element.SetAttributeValue("medianbuy", MedianBuy); 38 | if (MedianSell.HasValue && MedianSell.Value > 0) 39 | element.SetAttributeValue("mediansell", MedianSell); 40 | if (MedianAll.HasValue && MedianAll.Value > 0) 41 | element.SetAttributeValue("medianall", MedianAll); 42 | 43 | element.SetAttributeValue("lastupdate", LastUpdate); 44 | return element; 45 | } 46 | 47 | public int Id { get; set; } 48 | public string Name { get; set; } 49 | public int GroupId { get; set; } 50 | public double BasePrice { get; set; } 51 | public double Volume { get; set; } 52 | public double Capacity { get; set; } 53 | public double PortionSize { get; set; } 54 | public double? MedianSell { get; set; } 55 | public double? MedianBuy { get; set; } 56 | public double? MedianAll { get; set; } 57 | public DateTime? LastUpdate { get; set; } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /QuestorManager/Actions/ItemCache.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | //------------------------------------------------------------------------------- 10 | namespace QuestorManager.Actions 11 | { 12 | using System.Collections.Generic; 13 | using DirectEve; 14 | 15 | public class ItemCache 16 | { 17 | public ItemCache(DirectItem item, bool cacheRefineOutput) 18 | { 19 | Id = item.ItemId; 20 | Name = item.TypeName; 21 | 22 | TypeId = item.TypeId; 23 | GroupId = item.GroupId; 24 | MarketGroupId = item.MarketGroupId; 25 | PortionSize = item.PortionSize; 26 | 27 | Quantity = item.Quantity; 28 | QuantitySold = 0; 29 | 30 | RefineOutput = new List(); 31 | if (cacheRefineOutput) 32 | { 33 | foreach (var i in item.Materials) 34 | RefineOutput.Add(new ItemCache(i, false)); 35 | } 36 | } 37 | 38 | public InvType InvType { get; set; } 39 | 40 | public long Id { get; private set; } 41 | public string Name { get; private set; } 42 | 43 | public int TypeId { get; private set; } 44 | public int GroupId { get; private set; } 45 | public int MarketGroupId { get; private set; } 46 | public int PortionSize { get; private set; } 47 | 48 | public int Quantity { get; private set; } 49 | public int QuantitySold { get; set; } 50 | 51 | public double? StationBuy { get; set; } 52 | 53 | public List RefineOutput { get; private set; } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /QuestorManager/Actions/Sell.cs: -------------------------------------------------------------------------------- 1 | namespace QuestorManager.Actions 2 | { 3 | 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Linq; 7 | using System.Text; 8 | using DirectEve; 9 | using DirectEve = global::QuestorManager.Common.DirectEve; 10 | using global::QuestorManager.Common; 11 | using global::QuestorManager.Domains; 12 | using global::QuestorManager.Module; 13 | 14 | 15 | class Sell 16 | { 17 | public StateSell State { get; set; } 18 | 19 | public int Item { get; set; } 20 | public int Unit { get; set; } 21 | 22 | private DateTime _lastAction; 23 | 24 | 25 | 26 | 27 | public void ProcessState() 28 | { 29 | var marketWindow = DirectEve.Instance.Windows.OfType().FirstOrDefault(); 30 | var hangar = DirectEve.Instance.GetItemHangar(); 31 | var sellWindow = DirectEve.Instance.Windows.OfType().FirstOrDefault(w => w.IsSellAction); 32 | 33 | switch (State) 34 | { 35 | case StateSell.Idle: 36 | case StateSell.Done: 37 | break; 38 | 39 | case StateSell.Begin: 40 | State = StateSell.StartQuickSell; 41 | break; 42 | 43 | case StateSell.StartQuickSell: 44 | 45 | if (DateTime.Now.Subtract(_lastAction).TotalSeconds < 1) 46 | break; 47 | _lastAction = DateTime.Now; 48 | 49 | if (hangar.Window == null) 50 | { 51 | // No, command it to open 52 | DirectEve.Instance.ExecuteCommand(DirectCmd.OpenHangarFloor); 53 | break; 54 | } 55 | 56 | if (!hangar.IsReady) 57 | break; 58 | 59 | var directItem = hangar.Items.FirstOrDefault(i => (i.TypeId == Item)); 60 | if (directItem == null) 61 | { 62 | Logging.Log("Sell: Item " + Item + " no longer exists in the hanger"); 63 | break; 64 | } 65 | 66 | // Update Quantity 67 | if (Unit == 00) 68 | Unit = directItem.Quantity; 69 | 70 | 71 | 72 | Logging.Log("Sell: Starting QuickSell for " + Item); 73 | if (!directItem.QuickSell()) 74 | { 75 | _lastAction = DateTime.Now.AddSeconds(-5); 76 | 77 | Logging.Log("Sell: QuickSell failed for " + Item + ", retrying in 5 seconds"); 78 | break; 79 | } 80 | 81 | State = StateSell.WaitForSellWindow; 82 | break; 83 | 84 | case StateSell.WaitForSellWindow: 85 | 86 | 87 | //if (sellWindow == null || !sellWindow.IsReady || sellWindow.Item.ItemId != Item) 88 | // break; 89 | 90 | // Mark as new execution 91 | _lastAction = DateTime.Now; 92 | 93 | Logging.Log("Sell: Inspecting sell order for " + Item); 94 | State = StateSell.InspectOrder; 95 | break; 96 | 97 | case StateSell.InspectOrder: 98 | // Let the order window stay open for 2 seconds 99 | if (DateTime.Now.Subtract(_lastAction).TotalSeconds < 2) 100 | break; 101 | 102 | if (!sellWindow.OrderId.HasValue || !sellWindow.Price.HasValue || !sellWindow.RemainingVolume.HasValue) 103 | { 104 | Logging.Log("Sell: No order available for " + Item); 105 | 106 | sellWindow.Cancel(); 107 | State = StateSell.WaitingToFinishQuickSell; 108 | break; 109 | } 110 | 111 | var price = sellWindow.Price.Value; 112 | 113 | Logging.Log("Sell: Selling " + Unit + " of " + Item + " [Sell price: " + (price * Unit).ToString("#,##0.00") + "]"); 114 | 115 | sellWindow.Accept(); 116 | 117 | 118 | _lastAction = DateTime.Now; 119 | State = StateSell.WaitingToFinishQuickSell; 120 | break; 121 | 122 | case StateSell.WaitingToFinishQuickSell: 123 | if (sellWindow == null || !sellWindow.IsReady || sellWindow.Item.ItemId != Item) 124 | { 125 | var modal = DirectEve.Instance.Windows.FirstOrDefault(w => w.IsModal); 126 | if (modal != null) 127 | modal.Close(); 128 | 129 | State = StateSell.Done; 130 | break; 131 | } 132 | break; 133 | 134 | } 135 | 136 | 137 | } 138 | 139 | 140 | 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /QuestorManager/Actions/StateBuy.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum StateBuy 9 | { 10 | Idle, 11 | Done, 12 | Begin, 13 | OpenMarket, 14 | LoadItem, 15 | BuyItem, 16 | WaitForItems, 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /QuestorManager/Actions/StateBuyLPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum StateBuyLPI 9 | { 10 | Idle, 11 | Begin, 12 | OpenItemHangar, 13 | OpenLpStore, 14 | FindOffer, 15 | CheckPetition, 16 | OpenMarket, 17 | BuyItems, 18 | AcceptOffer, 19 | Quatity, 20 | Done, 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /QuestorManager/Actions/StateDrop.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum StateDrop 9 | { 10 | Idle, 11 | Begin, 12 | OpenItemHangar, 13 | OpenCargo, 14 | MoveItems, 15 | AllItems, 16 | WaitForMove, 17 | StackItemsHangar, 18 | WaitForStacking, 19 | Done, 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /QuestorManager/Actions/StateGrab.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum StateGrab 9 | { 10 | Idle, 11 | Done, 12 | Begin, 13 | OpenItemHangar, 14 | OpenCargo, 15 | MoveItems, 16 | AllItems, 17 | WaitForItems, 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /QuestorManager/Actions/StateSell.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum StateSell 9 | { 10 | Idle, 11 | Done, 12 | Begin, 13 | StartQuickSell, 14 | WaitForSellWindow, 15 | InspectOrder, 16 | WaitingToFinishQuickSell, 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /QuestorManager/Actions/ValueDumpState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager.Actions 7 | { 8 | public enum ValueDumpState 9 | { 10 | Idle, 11 | Begin, 12 | Done, 13 | GetItems, 14 | UpdatePrices, 15 | NextItem, 16 | StartQuickSell, 17 | WaitForSellWindow, 18 | InspectOrder, 19 | WaitingToFinishQuickSell, 20 | CheckMineralPrices, 21 | GetMineralPrice, 22 | RefineItems, 23 | SaveMineralPrices 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /QuestorManager/Common/DirectEve.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Common 11 | { 12 | public static class DirectEve 13 | { 14 | private static global::DirectEve.DirectEve _instance; 15 | 16 | /// 17 | /// An instance to DirectEve which is globally available to all modules 18 | /// 19 | public static global::DirectEve.DirectEve Instance 20 | { 21 | get { return _instance ?? (_instance = new global::DirectEve.DirectEve()); } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /QuestorManager/Common/Logging.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Common 11 | { 12 | using System; 13 | using InnerSpaceAPI; 14 | 15 | public static class Logging 16 | { 17 | /// 18 | /// Log a line to the console 19 | /// 20 | /// 21 | public static void Log(string line) 22 | { 23 | InnerSpace.Echo(string.Format("{0:HH:mm:ss} {1}", DateTime.Now, line)); 24 | } 25 | 26 | /// 27 | /// Log a line to the console 28 | /// 29 | /// 30 | public static void Log(string format, params object[] parms) 31 | { 32 | var line = string.Format(format, parms); 33 | Log(line); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /QuestorManager/Domains/Category.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Domains 11 | { 12 | public enum Category 13 | { 14 | System = 0, 15 | Owner = 1, 16 | Celestial = 2, 17 | Station = 3, 18 | Material = 4, 19 | Accessories = 5, 20 | Ship = 6, 21 | Module = 7, 22 | Charge = 8, 23 | Blueprint = 9, 24 | Trading = 10, 25 | Entity = 11, 26 | Bonus = 14, 27 | Skill = 16, 28 | Commodity = 17, 29 | Drone = 18, 30 | Implant = 20, 31 | Deployable = 22, 32 | Structure = 23, 33 | Reaction = 24, 34 | Asteroid = 25, 35 | } 36 | } -------------------------------------------------------------------------------- /QuestorManager/Domains/Group.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Domains 11 | { 12 | public enum Group 13 | { 14 | Star = 6, 15 | Station = 15, 16 | 17 | Capsule = 29, 18 | 19 | // Note: This includes microwarpdrives as well! 20 | Afterburner = 46, 21 | 22 | ShieldBoosters = 40, 23 | ShieldHardeners = 77, 24 | ArmorRepairer = 62, 25 | ArmorHardeners = 328, 26 | DamageControl = 60, 27 | 28 | SensorBooster = 212, 29 | TrackingComputer = 213, 30 | 31 | CapacitorGroupCharge = 87, 32 | CriminalTags = 370, 33 | EmpireInsigniaDrops = 409, 34 | 35 | StasisWeb = 65, 36 | TargetPainter = 379, 37 | 38 | EnergyWeapon = 53, 39 | ProjectileWeapon = 55, 40 | HybridWeapon = 74, 41 | 42 | SentryGun = 99, 43 | ProtectiveSentryGun = 180, 44 | MobileSentryGun = 336, 45 | DestructibleSentryGun = 383, 46 | MobileMissileSentry = 417, 47 | MobileProjectileSentry = 426, 48 | MobileLaserSentry = 430, 49 | StasisWebificationBattery = 441, 50 | MobileHybridSentry = 449, 51 | DeadspaceOverseersSentry = 495, 52 | EnergyNeutralizingBattery = 837, 53 | 54 | LargeCollidableStructure = 319, 55 | 56 | CargoContainer = 12, 57 | SpawnContainer = 306, 58 | SecureContainer = 340, 59 | AuditLogSecureContainer = 448, 60 | FreightContainer = 649, 61 | MissionContainer = 952, 62 | 63 | SiegeMissileLaunchers = 508, 64 | CruiseMissileLaunchers = 506, 65 | 66 | Salvager = 538, 67 | TractorBeam = 650, 68 | 69 | Wreck = 186, 70 | 71 | Drugs = 313, 72 | ToxicWaste = 282, 73 | Slaves = 283, 74 | SmallArms = 280, 75 | } 76 | } -------------------------------------------------------------------------------- /QuestorManager/Extensions/DirectEveExtension.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Extensions 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | using System.Linq; 15 | using DirectEve; 16 | 17 | public static class DirectEveExtension 18 | { 19 | /// 20 | /// return a bookmark by it's id 21 | /// 22 | /// 23 | /// 24 | /// 25 | /// 26 | /// Return's null if no bookmark was found 27 | /// 28 | public static DirectBookmark GetBookmarkById(this DirectEve directEve, long bookmarkId) 29 | { 30 | return directEve.Bookmarks.FirstOrDefault(b => b.BookmarkId == bookmarkId); 31 | } 32 | 33 | /// 34 | /// Calculate distance from me 35 | /// 36 | /// 37 | /// 38 | /// 39 | /// 40 | /// 41 | public static double DistanceFromMe(this DirectEve directEve, double x, double y, double z) 42 | { 43 | if (directEve.ActiveShip.Entity == null) 44 | return -1; 45 | 46 | var curX = directEve.ActiveShip.Entity.X; 47 | var curY = directEve.ActiveShip.Entity.Y; 48 | var curZ = directEve.ActiveShip.Entity.Z; 49 | 50 | return Math.Sqrt((curX - x)*(curX - x) + (curY - y)*(curY - y) + (curZ - z)*(curZ - z)); 51 | } 52 | 53 | /// 54 | /// Get the first entity with a certain name 55 | /// 56 | /// 57 | /// 58 | /// 59 | public static DirectEntity GetEntityByName(this DirectEve directEve, string name) 60 | { 61 | return directEve.Entities.FirstOrDefault(e => string.Compare(e.Name, name, true) == 0); 62 | } 63 | 64 | /// 65 | /// Get all entities with the name 66 | /// 67 | /// 68 | /// 69 | /// 70 | public static IEnumerable GetEntitiesByName(this DirectEve directEve, string name) 71 | { 72 | return directEve.Entities.Where(e => string.Compare(e.Name, name, true) == 0); 73 | } 74 | 75 | /// 76 | /// Returns the entity that we're approaching 77 | /// 78 | /// 79 | /// 80 | public static DirectEntity GetApproachingEntity(this DirectEve directEve) 81 | { 82 | if (directEve.ActiveShip.Entity == null) 83 | return null; 84 | 85 | return directEve.GetEntityById(directEve.ActiveShip.Entity.FollowId); 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /QuestorManager/ListItems.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager 7 | { 8 | public class ListItems 9 | { 10 | public int Id { get; set; } 11 | public string name { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /QuestorManager/ListViewColumnSorter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Windows.Forms; 4 | 5 | 6 | public class ListViewColumnSort : IComparer 7 | { 8 | public enum TipoCompare 9 | { 10 | Cadena, 11 | Numero, 12 | Fecha 13 | } 14 | public TipoCompare CompararPor; 15 | public int ColumnIndex = 0; 16 | public SortOrder Sorting = SortOrder.Ascending; 17 | 18 | public ListViewColumnSort() 19 | { 20 | 21 | } 22 | public ListViewColumnSort(int columna) 23 | { 24 | ColumnIndex = columna; 25 | } 26 | public int Compare(Object a, Object b) 27 | { 28 | 29 | int menor = -1, mayor = 1; 30 | String s1, s2; 31 | // 32 | if (Sorting == SortOrder.None) 33 | return 0; 34 | 35 | s1 = ((ListViewItem)a).SubItems[ColumnIndex].Text; 36 | s2 = ((ListViewItem)b).SubItems[ColumnIndex].Text; 37 | 38 | if (Sorting == SortOrder.Descending) 39 | { 40 | menor = 1; 41 | mayor = -1; 42 | } 43 | // 44 | switch (CompararPor) 45 | { 46 | case TipoCompare.Fecha: 47 | try 48 | { 49 | DateTime f1, f2; 50 | f1 = DateTime.Parse(s1); 51 | f2 = DateTime.Parse(s2); 52 | // 53 | if (f1 < f2) 54 | return menor; 55 | else if (f1 == f2) 56 | return 0; 57 | else 58 | return mayor; 59 | } 60 | catch 61 | { 62 | return System.String.Compare(s1, s2, true) * mayor; 63 | } 64 | 65 | case TipoCompare.Numero: 66 | try 67 | { 68 | decimal n1, n2; 69 | n1 = decimal.Parse(s1); 70 | n2 = decimal.Parse(s2); 71 | if (n1 < n2) 72 | return menor; 73 | else if (n1 == n2) 74 | return 0; 75 | else 76 | return mayor; 77 | } 78 | catch 79 | { 80 | return System.String.Compare(s1, s2, true) * mayor; 81 | } 82 | 83 | default: 84 | 85 | return System.String.Compare(s1, s2, true) * mayor; 86 | 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /QuestorManager/Module/MissionBookmarkDestination.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Module 11 | { 12 | using System; 13 | using System.Linq; 14 | using DirectEve; 15 | using global::QuestorManager.Common; 16 | using DirectEve = global::QuestorManager.Common.DirectEve; 17 | 18 | public class MissionBookmarkDestination : TravelerDestination 19 | { 20 | private DateTime _nextAction; 21 | 22 | public MissionBookmarkDestination(DirectAgentMissionBookmark bookmark) 23 | { 24 | if (bookmark == null) 25 | { 26 | Logging.Log("Traveler.MissionBookmarkDestination: Invalid mission bookmark!"); 27 | 28 | AgentId = -1; 29 | Title = null; 30 | SolarSystemId = DirectEve.Instance.Session.SolarSystemId ?? -1; 31 | return; 32 | } 33 | 34 | Logging.Log("Traveler.MissionBookmarkDestination: Destination set to mission bookmark [" + bookmark.Title + "]"); 35 | AgentId = bookmark.AgentId ?? -1; 36 | Title = bookmark.Title; 37 | SolarSystemId = bookmark.SolarSystemId ?? -1; 38 | } 39 | 40 | public MissionBookmarkDestination(int agentId, string title) 41 | : this(GetMissionBookmark(agentId, title)) 42 | { 43 | } 44 | 45 | public long AgentId { get; set; } 46 | public string Title { get; set; } 47 | 48 | private static DirectAgentMissionBookmark GetMissionBookmark(long agentId, string title) 49 | { 50 | var mission = DirectEve.Instance.AgentMissions.FirstOrDefault(m => m.AgentId == agentId); 51 | if (mission == null) 52 | return null; 53 | 54 | return mission.Bookmarks.FirstOrDefault(b => b.Title == title); 55 | } 56 | 57 | public override bool PerformFinalDestinationTask() 58 | { 59 | // Mission bookmarks have a 1.000.000 distance warp-to limit (changed it to 150.000.000 as there are some bugged missions around) 60 | return BookmarkDestination.PerformFinalDestinationTask(GetMissionBookmark(AgentId, Title), 150000000, ref _nextAction); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /QuestorManager/Module/SolarSystemDestination.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Module 11 | { 12 | using System; 13 | using DirectEve; 14 | using global::QuestorManager.Common; 15 | using DirectEve = global::QuestorManager.Common.DirectEve; 16 | 17 | public class SolarSystemDestination : TravelerDestination 18 | { 19 | private DateTime _nextAction; 20 | 21 | public SolarSystemDestination(long solarSystemId) 22 | { 23 | Logging.Log("Traveler.SolarSystemDestination: Destination set to solar system id [" + solarSystemId + "]"); 24 | SolarSystemId = solarSystemId; 25 | } 26 | 27 | public override bool PerformFinalDestinationTask() 28 | { 29 | // The destination is the solar system, not the station in the solar system. 30 | if (DirectEve.Instance.Session.IsInStation) 31 | { 32 | if (_nextAction < DateTime.Now) 33 | { 34 | Logging.Log("Traveler.SolarSystemDestination: Exiting station"); 35 | 36 | DirectEve.Instance.ExecuteCommand(DirectCmd.CmdExitStation); 37 | _nextAction = DateTime.Now.AddSeconds(30); 38 | } 39 | 40 | // We are not there yet 41 | return false; 42 | } 43 | 44 | // The task was to get to the solar system, we're threre :) 45 | Logging.Log("Traveler.SolarSystemDestination: Arrived in system"); 46 | return true; 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /QuestorManager/Module/StationDestination.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Module 11 | { 12 | using System; 13 | using DirectEve; 14 | using global::QuestorManager.Common; 15 | using global::QuestorManager.Extensions; 16 | using DirectEve = global::QuestorManager.Common.DirectEve; 17 | 18 | public class StationDestination : TravelerDestination 19 | { 20 | private DateTime _nextAction; 21 | 22 | public StationDestination(long stationId) 23 | { 24 | var station = DirectEve.Instance.Navigation.GetLocation(stationId); 25 | if (station == null || !station.ItemId.HasValue || !station.SolarSystemId.HasValue) 26 | { 27 | Logging.Log("Traveler.StationDestination: Invalid station id [" + stationId + "]"); 28 | 29 | SolarSystemId = DirectEve.Instance.Session.SolarSystemId ?? -1; 30 | StationId = -1; 31 | StationName = ""; 32 | return; 33 | } 34 | 35 | Logging.Log("Traveler.StationDestination: Destination set to [" + station.Name + "]"); 36 | 37 | StationId = stationId; 38 | StationName = station.Name; 39 | SolarSystemId = station.SolarSystemId.Value; 40 | } 41 | 42 | public StationDestination(long solarSystemId, long stationId, string stationName) 43 | { 44 | Logging.Log("Traveler.StationDestination: Destination set to [" + stationName + "]"); 45 | 46 | SolarSystemId = solarSystemId; 47 | StationId = stationId; 48 | StationName = stationName; 49 | } 50 | 51 | public long StationId { get; set; } 52 | public string StationName { get; set; } 53 | 54 | public override bool PerformFinalDestinationTask() 55 | { 56 | return PerformFinalDestinationTask(StationId, StationName, ref _nextAction); 57 | } 58 | 59 | internal static bool PerformFinalDestinationTask(long stationId, string stationName, ref DateTime nextAction) 60 | { 61 | if (DirectEve.Instance.Session.IsInStation && DirectEve.Instance.Session.StationId == stationId) 62 | { 63 | Logging.Log("Traveler.StationDestination: Arrived in station"); 64 | return true; 65 | } 66 | 67 | if (DirectEve.Instance.Session.IsInStation) 68 | { 69 | // We are in a station, but not the correct station! 70 | if (nextAction < DateTime.Now) 71 | { 72 | Logging.Log("Traveler.StationDestination: We're docked in the wrong station, undocking"); 73 | 74 | DirectEve.Instance.ExecuteCommand(DirectCmd.CmdExitStation); 75 | nextAction = DateTime.Now.AddSeconds(30); 76 | } 77 | 78 | // We are not there yet 79 | return false; 80 | } 81 | 82 | if (!DirectEve.Instance.Session.IsInSpace) 83 | { 84 | // We are not in station and not in space? Wait for a bit 85 | return false; 86 | } 87 | 88 | if (nextAction > DateTime.Now) 89 | return false; 90 | 91 | var entity = DirectEve.Instance.GetEntityByName(stationName); 92 | if (entity == null) 93 | { 94 | // We are there but no station? Wait a bit 95 | return false; 96 | } 97 | 98 | if (entity.Distance < 2500) 99 | { 100 | Logging.Log("Traveler.StationDestination: Dock at [" + entity.Name + "]"); 101 | entity.Dock(); 102 | } 103 | else if (entity.Distance < 150000) 104 | entity.Approach(); 105 | else 106 | { 107 | Logging.Log("Traveler.StationDestination: Warp to and dock at [" + entity.Name + "]"); 108 | entity.WarpToAndDock(); 109 | } 110 | 111 | nextAction = DateTime.Now.AddSeconds(30); 112 | return false; 113 | } 114 | } 115 | } -------------------------------------------------------------------------------- /QuestorManager/Module/TravelerDestination.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Module 11 | { 12 | public abstract class TravelerDestination 13 | { 14 | public long SolarSystemId { get; set; } 15 | 16 | /// 17 | /// This function returns true if we are at the final destination and false if the task is not yet complete 18 | /// 19 | /// 20 | public abstract bool PerformFinalDestinationTask(); 21 | } 22 | } -------------------------------------------------------------------------------- /QuestorManager/Module/TravelerState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager.Module 11 | { 12 | public enum TravelerState 13 | { 14 | Idle, 15 | Traveling, 16 | AtDestination, 17 | Error 18 | } 19 | } -------------------------------------------------------------------------------- /QuestorManager/Program.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | namespace QuestorManager 11 | { 12 | using System; 13 | using System.Windows.Forms; 14 | 15 | internal static class Program 16 | { 17 | /// 18 | /// The main entry point for the application. 19 | /// 20 | [STAThread] 21 | private static void Main() 22 | { 23 | Application.EnableVisualStyles(); 24 | Application.SetCompatibleTextRenderingDefault(false); 25 | Application.Run(new MainForm()); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /QuestorManager/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | // ------------------------------------------------------------------------------- 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | 17 | [assembly: AssemblyTitle("QuestorManager")] 18 | [assembly: AssemblyDescription("")] 19 | [assembly: AssemblyConfiguration("")] 20 | [assembly: AssemblyCompany("")] 21 | [assembly: AssemblyProduct("QuestorManager")] 22 | [assembly: AssemblyCopyright("Copyright © 2011")] 23 | [assembly: AssemblyTrademark("")] 24 | [assembly: AssemblyCulture("")] 25 | 26 | // Setting ComVisible to false makes the types in this assembly not visible 27 | // to COM components. If you need to access a type in this assembly from 28 | // COM, set the ComVisible attribute to true on that type. 29 | 30 | [assembly: ComVisible(false)] 31 | 32 | // The following GUID is for the ID of the typelib if this project is exposed to COM 33 | 34 | [assembly: Guid("d936bd9c-33d2-4e10-8657-fac7feb56875")] 35 | 36 | // Version information for an assembly consists of the following four values: 37 | // 38 | // Major Version 39 | // Minor Version 40 | // Build Number 41 | // Revision 42 | // 43 | // You can specify all the values or you can default the Build and Revision Numbers 44 | // by using the '*' as shown below: 45 | // [assembly: AssemblyVersion("1.0.*")] 46 | 47 | [assembly: AssemblyVersion("1.0.0.0")] 48 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /QuestorManager/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.239 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorManager.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Traveler.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /QuestorManager/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.239 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorManager.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /QuestorManager/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /QuestorManager/State.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace QuestorManager 7 | { 8 | public enum State 9 | { 10 | Idle, 11 | NextAction, 12 | Traveler, 13 | CmdLine, 14 | ValueDump, 15 | BuyLPI, 16 | MakeShip, 17 | Drop, 18 | Grab, 19 | Buy, 20 | Sell, 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /QuestorSettings/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace QuestorSettings 7 | { 8 | static class Program 9 | { 10 | [STAThread] 11 | static void Main() 12 | { 13 | Application.EnableVisualStyles(); 14 | Application.SetCompatibleTextRenderingDefault(false); 15 | Application.Run(new Form1()); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /QuestorSettings/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | 6 | [assembly: AssemblyTitle("QuestorSettings")] 7 | [assembly: AssemblyDescription("")] 8 | [assembly: AssemblyConfiguration("")] 9 | [assembly: AssemblyCompany("")] 10 | [assembly: AssemblyProduct("QuestorSettings")] 11 | [assembly: AssemblyCopyright("Copyright © 2011")] 12 | [assembly: AssemblyTrademark("")] 13 | [assembly: AssemblyCulture("")] 14 | 15 | 16 | [assembly: ComVisible(false)] 17 | 18 | 19 | [assembly: Guid("ea6cef53-c798-4395-933c-fdb8424b37df")] 20 | 21 | 22 | [assembly: AssemblyVersion("1.0.0.0")] 23 | [assembly: AssemblyFileVersion("1.0.0.0")] 24 | -------------------------------------------------------------------------------- /QuestorSettings/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Este código fue generado por una herramienta. 4 | // Versión de runtime:4.0.30319.239 5 | // 6 | // Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si 7 | // se vuelve a generar el código. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorSettings.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// Clase de recurso con establecimiento inflexible de tipos, para buscar cadenas traducidas, etc. 17 | /// 18 | // StronglyTypedResourceBuilder generó automáticamente esta clase 19 | // a través de una herramienta como ResGen o Visual Studio. 20 | // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen 21 | // con la opción /str o vuelva a generar su proyecto de VS. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("QuestorSettings.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las 51 | /// búsquedas de recursos mediante esta clase de recurso con establecimiento inflexible de tipos. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /QuestorSettings/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Este código fue generado por una herramienta. 4 | // Versión de runtime:4.0.30319.239 5 | // 6 | // Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si 7 | // se vuelve a generar el código. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorSettings.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /QuestorSettings/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /QuestorSettings/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /QuestorStatistics/ListViewColumnSorter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Windows.Forms; 4 | 5 | 6 | public class ListViewColumnSort : IComparer 7 | { 8 | public enum TipoCompare 9 | { 10 | Cadena, 11 | Numero, 12 | Fecha 13 | } 14 | public TipoCompare CompararPor; 15 | public int ColumnIndex = 0; 16 | public SortOrder Sorting = SortOrder.Ascending; 17 | 18 | public ListViewColumnSort() 19 | { 20 | 21 | } 22 | public ListViewColumnSort(int columna) 23 | { 24 | ColumnIndex = columna; 25 | } 26 | public int Compare(Object a, Object b) 27 | { 28 | 29 | int menor = -1, mayor = 1; 30 | String s1, s2; 31 | // 32 | if (Sorting == SortOrder.None) 33 | return 0; 34 | 35 | s1 = ((ListViewItem)a).SubItems[ColumnIndex].Text; 36 | s2 = ((ListViewItem)b).SubItems[ColumnIndex].Text; 37 | 38 | if (Sorting == SortOrder.Descending) 39 | { 40 | menor = 1; 41 | mayor = -1; 42 | } 43 | // 44 | switch (CompararPor) 45 | { 46 | case TipoCompare.Fecha: 47 | try 48 | { 49 | DateTime f1, f2; 50 | f1 = DateTime.Parse(s1); 51 | f2 = DateTime.Parse(s2); 52 | // 53 | if (f1 < f2) 54 | return menor; 55 | else if (f1 == f2) 56 | return 0; 57 | else 58 | return mayor; 59 | } 60 | catch 61 | { 62 | return System.String.Compare(s1, s2, true) * mayor; 63 | } 64 | 65 | case TipoCompare.Numero: 66 | try 67 | { 68 | decimal n1, n2; 69 | n1 = decimal.Parse(s1); 70 | n2 = decimal.Parse(s2); 71 | if (n1 < n2) 72 | return menor; 73 | else if (n1 == n2) 74 | return 0; 75 | else 76 | return mayor; 77 | } 78 | catch 79 | { 80 | return System.String.Compare(s1, s2, true) * mayor; 81 | } 82 | 83 | default: 84 | 85 | return System.String.Compare(s1, s2, true) * mayor; 86 | 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /QuestorStatistics/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace QuestorStatistics 7 | { 8 | static class Program 9 | { 10 | 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new FrmMain()); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /QuestorStatistics/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General information about an assembly is controlled through the following 6 | // Set of attributes. Change these attribute values ​​to modify the information 7 | // Associated with an assembly. 8 | [assembly: AssemblyTitle("QuestorStatistics")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("QuestorStatistics")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2011")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // General information about an assembly is controlled through the following 18 | // Set / / If set to false ComVisible, types in this assembly not visible 19 | // To COM components. If you need access to a type of this assembly from 20 | // COM, set the attribute to true ComVisible this guy. 21 | [assembly: ComVisible(false)] 22 | 23 | // The following serves as an identifier GUID typelib if this project is exposed to ComVisible true in this type. 24 | [assembly: Guid("942c26ef-0b24-48b9-906f-ccc4568c17c3")] 25 | 26 | // Version information for an assembly consists of four values: 27 | // 28 | // Major Version 29 | // Minor Version 30 | // Build Number 31 | // Review 32 | // 33 | // You can specify all the values ​​or set as default the build version numbers and revision 34 | // By the asterisk ('*'), as shown below: 35 | // [Assembly: AssemblyVersion ("1.0 .*")] 36 | [assembly: AssemblyVersion("1.0.0.0")] 37 | [assembly: AssemblyFileVersion("1.0.0.0")] 38 | -------------------------------------------------------------------------------- /QuestorStatistics/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Este código fue generado por una herramienta. 4 | // Versión de runtime:4.0.30319.239 5 | // 6 | // Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si 7 | // se vuelve a generar el código. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorStatistics.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// Clase de recurso con establecimiento inflexible de tipos, para buscar cadenas traducidas, etc. 17 | /// 18 | // StronglyTypedResourceBuilder generó automáticamente esta clase 19 | // a través de una herramienta como ResGen o Visual Studio. 20 | // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen 21 | // con la opción /str o vuelva a generar su proyecto de VS. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("QuestorStatistics.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las 51 | /// búsquedas de recursos mediante esta clase de recurso con establecimiento inflexible de tipos. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /QuestorStatistics/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Este código fue generado por una herramienta. 4 | // Versión de runtime:4.0.30319.239 5 | // 6 | // Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si 7 | // se vuelve a generar el código. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace QuestorStatistics.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /QuestorStatistics/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /QuestorStatistics/QuestorStatistics.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {C6FE1C9A-534F-4E7B-B70C-15981B48A46D} 9 | WinExe 10 | Properties 11 | QuestorStatistics 12 | QuestorStatistics 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | false 27 | 28 | 29 | x86 30 | pdbonly 31 | true 32 | ..\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | false 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Form 55 | 56 | 57 | FrmMain.cs 58 | 59 | 60 | 61 | 62 | 63 | FrmMain.cs 64 | 65 | 66 | ResXFileCodeGenerator 67 | Resources.Designer.cs 68 | Designer 69 | 70 | 71 | True 72 | Resources.resx 73 | True 74 | 75 | 76 | 77 | SettingsSingleFileGenerator 78 | Settings.Designer.cs 79 | 80 | 81 | True 82 | Settings.settings 83 | True 84 | 85 | 86 | 87 | 94 | -------------------------------------------------------------------------------- /QuestorStatistics/QuestorStatistics.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /QuestorStatistics/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /UpdateInvTypes/InvType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Xml.Linq; 6 | 7 | namespace Questor 8 | { 9 | public class InvType 10 | { 11 | public InvType(XElement element) 12 | { 13 | Id = (int)element.Attribute("id"); 14 | Name = (string)element.Attribute("name"); 15 | GroupId = (int)element.Attribute("groupid"); 16 | BasePrice = (double)element.Attribute("baseprice"); 17 | Volume = (double)element.Attribute("volume"); 18 | Capacity = (double)element.Attribute("capacity"); 19 | PortionSize = (double)element.Attribute("portionsize"); 20 | MedianBuy = (double?)element.Attribute("medianbuy"); 21 | MedianSell = (double?)element.Attribute("mediansell"); 22 | MedianAll = (double?)element.Attribute("medianall"); 23 | LastUpdate = (DateTime?)element.Attribute("lastupdate"); 24 | } 25 | 26 | public XElement Save() 27 | { 28 | var element = new XElement("invtype"); 29 | element.SetAttributeValue("id", Id); 30 | element.SetAttributeValue("name", Name); 31 | element.SetAttributeValue("groupid", GroupId); 32 | element.SetAttributeValue("baseprice", BasePrice); 33 | element.SetAttributeValue("volume", Volume); 34 | element.SetAttributeValue("capacity", Capacity); 35 | element.SetAttributeValue("portionsize", PortionSize); 36 | if (MedianBuy.HasValue && MedianBuy.Value > 0) 37 | element.SetAttributeValue("medianbuy", MedianBuy); 38 | if (MedianSell.HasValue && MedianSell.Value > 0) 39 | element.SetAttributeValue("mediansell", MedianSell); 40 | if (MedianAll.HasValue && MedianAll.Value > 0) 41 | element.SetAttributeValue("medianall", MedianAll); 42 | 43 | element.SetAttributeValue("lastupdate", LastUpdate); 44 | return element; 45 | } 46 | 47 | public int Id { get; set; } 48 | public string Name { get; set; } 49 | public int GroupId { get; set; } 50 | public double BasePrice { get; set; } 51 | public double Volume { get; set; } 52 | public double Capacity { get; set; } 53 | public double PortionSize { get; set; } 54 | public double? MedianSell { get; set; } 55 | public double? MedianBuy { get; set; } 56 | public double? MedianAll { get; set; } 57 | public DateTime? LastUpdate { get; set; } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /UpdateInvTypes/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace UpdateInvTypes 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new frmMain()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /UpdateInvTypes/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UpdateInvTypes")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("UpdateInvTypes")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("fab1cb5f-f1c8-457b-bee3-1a87a051f24e")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /UpdateInvTypes/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UpdateInvTypes.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UpdateInvTypes.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /UpdateInvTypes/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UpdateInvTypes.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /UpdateInvTypes/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /UpdateInvTypes/UpdateInvTypes.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {69F44183-8D8B-48A7-B3CA-813A9B57E2A2} 9 | WinExe 10 | Properties 11 | UpdateInvTypes 12 | UpdateInvTypes 13 | v3.5 14 | 512 15 | 16 | 17 | x86 18 | true 19 | full 20 | false 21 | $(SolutionDir)bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | false 26 | 27 | 28 | x86 29 | none 30 | true 31 | ..\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | false 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | frmMain.cs 54 | 55 | 56 | 57 | 58 | 59 | frmMain.cs 60 | 61 | 62 | ResXFileCodeGenerator 63 | Resources.Designer.cs 64 | Designer 65 | 66 | 67 | True 68 | Resources.resx 69 | 70 | 71 | SettingsSingleFileGenerator 72 | Settings.Designer.cs 73 | 74 | 75 | True 76 | Settings.settings 77 | True 78 | 79 | 80 | 81 | 88 | -------------------------------------------------------------------------------- /UpdateInvTypes/frmMain.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace UpdateInvTypes 2 | { 3 | partial class frmMain 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | this.UpdateButton = new System.Windows.Forms.Button(); 33 | this.Progress = new System.Windows.Forms.ProgressBar(); 34 | this.tUpdate = new System.Windows.Forms.Timer(this.components); 35 | this.SuspendLayout(); 36 | // 37 | // UpdateButton 38 | // 39 | this.UpdateButton.Location = new System.Drawing.Point(12, 12); 40 | this.UpdateButton.Name = "UpdateButton"; 41 | this.UpdateButton.Size = new System.Drawing.Size(260, 23); 42 | this.UpdateButton.TabIndex = 0; 43 | this.UpdateButton.Text = "Update"; 44 | this.UpdateButton.UseVisualStyleBackColor = true; 45 | this.UpdateButton.Click += new System.EventHandler(this.Update_Click); 46 | // 47 | // Progress 48 | // 49 | this.Progress.Location = new System.Drawing.Point(12, 41); 50 | this.Progress.Name = "Progress"; 51 | this.Progress.Size = new System.Drawing.Size(260, 23); 52 | this.Progress.TabIndex = 1; 53 | // 54 | // tUpdate 55 | // 56 | this.tUpdate.Enabled = true; 57 | this.tUpdate.Tick += new System.EventHandler(this.tUpdate_Tick); 58 | // 59 | // frmMain 60 | // 61 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 62 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 63 | this.ClientSize = new System.Drawing.Size(284, 72); 64 | this.Controls.Add(this.Progress); 65 | this.Controls.Add(this.UpdateButton); 66 | this.Name = "frmMain"; 67 | this.Text = "Update InvTypes.xml"; 68 | this.ResumeLayout(false); 69 | 70 | } 71 | 72 | #endregion 73 | 74 | private System.Windows.Forms.Button UpdateButton; 75 | private System.Windows.Forms.ProgressBar Progress; 76 | private System.Windows.Forms.Timer tUpdate; 77 | } 78 | } 79 | 80 | -------------------------------------------------------------------------------- /UpdateInvTypes/frmMain.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Windows.Forms; 9 | 10 | namespace UpdateInvTypes 11 | { 12 | using System.IO; 13 | using System.Xml.Linq; 14 | using Questor; 15 | 16 | public partial class frmMain : Form 17 | { 18 | private bool _doUpdate; 19 | private bool _updating; 20 | private List _invTypes; 21 | 22 | public string InvTypesPath 23 | { 24 | get 25 | { 26 | return Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\InvTypes.xml"; 27 | } 28 | } 29 | 30 | public frmMain() 31 | { 32 | InitializeComponent(); 33 | 34 | _invTypes = new List(); 35 | 36 | var invTypes = XDocument.Load(InvTypesPath); 37 | foreach (var element in invTypes.Root.Elements("invtype")) 38 | _invTypes.Add(new InvType(element)); 39 | 40 | Progress.Step = 50; 41 | Progress.Value = 0; 42 | Progress.Minimum = 0; 43 | Progress.Maximum = _invTypes.Count; 44 | } 45 | 46 | private void Update_Click(object sender, EventArgs e) 47 | { 48 | _doUpdate ^= true; 49 | UpdateButton.Text = _doUpdate ? "Stop" : "Update"; 50 | 51 | if (!_doUpdate) 52 | { 53 | var xdoc = new XDocument(new XElement("invtypes")); 54 | foreach (var type in _invTypes) 55 | xdoc.Root.Add(type.Save()); 56 | xdoc.Save(InvTypesPath); 57 | } 58 | } 59 | 60 | private void tUpdate_Tick(object sender, EventArgs e) 61 | { 62 | // This is what you get if your too bored to setup an actual thread and do UI-invoke shit 63 | if (!_doUpdate) 64 | return; 65 | 66 | if (_updating) 67 | return; 68 | 69 | _updating = true; 70 | try 71 | { 72 | var types = _invTypes.Skip(Progress.Value).Take(Progress.Step); 73 | try 74 | { 75 | var needUpdating = types.Where(type => !type.LastUpdate.HasValue || DateTime.Now.Subtract(type.LastUpdate.Value).TotalDays > 7); 76 | if (needUpdating.Count() == 0) 77 | return; 78 | 79 | var queryString = string.Join("&", types.Select(type => "typeid=" + type.Id).ToArray()); 80 | queryString += "®ionlimit=10000002"; 81 | 82 | var url = "http://api.eve-central.com/api/marketstat?" + queryString; 83 | try 84 | { 85 | var prices = XDocument.Load(url); 86 | 87 | if ((string)prices.Root.Attribute("method") != "marketstat_xml") 88 | throw new Exception("Invalid XML method"); 89 | 90 | foreach (var type in prices.Root.Element("marketstat").Elements("type")) 91 | { 92 | var id = (int)type.Attribute("id"); 93 | var invType = types.Single(t => t.Id == id); 94 | 95 | var all = type.Element("all"); 96 | if (all != null) 97 | invType.MedianAll = (double?)all.Element("median"); 98 | 99 | var buy = type.Element("buy"); 100 | if (buy != null) 101 | invType.MedianBuy = (double?)buy.Element("median"); 102 | 103 | var sell = type.Element("sell"); 104 | if (sell != null) 105 | invType.MedianSell = (double?)sell.Element("median"); 106 | 107 | invType.LastUpdate = DateTime.Now; 108 | } 109 | } 110 | catch (Exception ex) 111 | { 112 | } 113 | } 114 | finally 115 | { 116 | Progress.Value += types.Count(); 117 | 118 | if (Progress.Value >= _invTypes.Count - 1) 119 | { 120 | _doUpdate = false; 121 | 122 | var xdoc = new XDocument(new XElement("invtypes")); 123 | foreach (var type in _invTypes) 124 | xdoc.Root.Add(type.Save()); 125 | xdoc.Save(InvTypesPath); 126 | 127 | UpdateButton.Text = _doUpdate ? "Stop" : "Update"; 128 | } 129 | } 130 | } 131 | finally 132 | { 133 | _updating = false; 134 | } 135 | } 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /ValueDump/InvType.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Xml.Linq; 6 | 7 | namespace Questor 8 | { 9 | public class InvType 10 | { 11 | public InvType(XElement element) 12 | { 13 | Id = (int)element.Attribute("id"); 14 | Name = (string)element.Attribute("name"); 15 | GroupId = (int)element.Attribute("groupid"); 16 | BasePrice = (double)element.Attribute("baseprice"); 17 | Volume = (double)element.Attribute("volume"); 18 | Capacity = (double)element.Attribute("capacity"); 19 | PortionSize = (double)element.Attribute("portionsize"); 20 | MedianBuy = (double?)element.Attribute("medianbuy"); 21 | MedianSell = (double?)element.Attribute("mediansell"); 22 | MedianAll = (double?)element.Attribute("medianall"); 23 | LastUpdate = (DateTime?)element.Attribute("lastupdate"); 24 | } 25 | 26 | public XElement Save() 27 | { 28 | var element = new XElement("invtype"); 29 | element.SetAttributeValue("id", Id); 30 | element.SetAttributeValue("name", Name); 31 | element.SetAttributeValue("groupid", GroupId); 32 | element.SetAttributeValue("baseprice", BasePrice); 33 | element.SetAttributeValue("volume", Volume); 34 | element.SetAttributeValue("capacity", Capacity); 35 | element.SetAttributeValue("portionsize", PortionSize); 36 | if (MedianBuy.HasValue && MedianBuy.Value > 0) 37 | element.SetAttributeValue("medianbuy", MedianBuy); 38 | if (MedianSell.HasValue && MedianSell.Value > 0) 39 | element.SetAttributeValue("mediansell", MedianSell); 40 | if (MedianAll.HasValue && MedianAll.Value > 0) 41 | element.SetAttributeValue("medianall", MedianAll); 42 | 43 | element.SetAttributeValue("lastupdate", LastUpdate); 44 | return element; 45 | } 46 | 47 | public int Id { get; set; } 48 | public string Name { get; set; } 49 | public int GroupId { get; set; } 50 | public double BasePrice { get; set; } 51 | public double Volume { get; set; } 52 | public double Capacity { get; set; } 53 | public double PortionSize { get; set; } 54 | public double? MedianSell { get; set; } 55 | public double? MedianBuy { get; set; } 56 | public double? MedianAll { get; set; } 57 | public DateTime? LastUpdate { get; set; } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ValueDump/ItemCache.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Copyright (c) TheHackerWithin.COM. All Rights Reserved. 4 | // 5 | // Please look in the accompanying license.htm file for the license that 6 | // applies to this source code. (a copy can also be found at: 7 | // http://www.thehackerwithin.com/license.htm) 8 | // 9 | //------------------------------------------------------------------------------- 10 | namespace Questor 11 | { 12 | using System.Collections.Generic; 13 | using DirectEve; 14 | 15 | public class ItemCache 16 | { 17 | public ItemCache(DirectItem item, bool cacheRefineOutput) 18 | { 19 | Id = item.ItemId; 20 | Name = item.TypeName; 21 | 22 | TypeId = item.TypeId; 23 | GroupId = item.GroupId; 24 | MarketGroupId = item.MarketGroupId; 25 | PortionSize = item.PortionSize; 26 | 27 | Quantity = item.Quantity; 28 | QuantitySold = 0; 29 | 30 | RefineOutput = new List(); 31 | if (cacheRefineOutput) 32 | { 33 | foreach (var i in item.Materials) 34 | RefineOutput.Add(new ItemCache(i, false)); 35 | } 36 | } 37 | 38 | public InvType InvType { get; set; } 39 | 40 | public long Id { get; private set; } 41 | public string Name { get; private set; } 42 | 43 | public int TypeId { get; private set; } 44 | public int GroupId { get; private set; } 45 | public int MarketGroupId { get; private set; } 46 | public int PortionSize { get; private set; } 47 | 48 | public int Quantity { get; private set; } 49 | public int QuantitySold { get; set; } 50 | 51 | public double? StationBuy { get; set; } 52 | 53 | public List RefineOutput { get; private set; } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /ValueDump/ListViewColumnSorter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Windows.Forms; 4 | 5 | 6 | public class ListViewColumnSort : IComparer 7 | { 8 | public enum TipoCompare 9 | { 10 | Cadena, 11 | Numero, 12 | Fecha 13 | } 14 | public TipoCompare CompararPor; 15 | public int ColumnIndex = 0; 16 | public SortOrder Sorting = SortOrder.Ascending; 17 | 18 | public ListViewColumnSort() 19 | { 20 | 21 | } 22 | public ListViewColumnSort(int columna) 23 | { 24 | ColumnIndex = columna; 25 | } 26 | public int Compare(Object a, Object b) 27 | { 28 | 29 | int menor = -1, mayor = 1; 30 | String s1, s2; 31 | // 32 | if (Sorting == SortOrder.None) 33 | return 0; 34 | 35 | s1 = ((ListViewItem)a).SubItems[ColumnIndex].Text; 36 | s2 = ((ListViewItem)b).SubItems[ColumnIndex].Text; 37 | 38 | if (Sorting == SortOrder.Descending) 39 | { 40 | menor = 1; 41 | mayor = -1; 42 | } 43 | // 44 | switch (CompararPor) 45 | { 46 | case TipoCompare.Fecha: 47 | try 48 | { 49 | DateTime f1, f2; 50 | f1 = DateTime.Parse(s1); 51 | f2 = DateTime.Parse(s2); 52 | // 53 | if (f1 < f2) 54 | return menor; 55 | else if (f1 == f2) 56 | return 0; 57 | else 58 | return mayor; 59 | } 60 | catch 61 | { 62 | return System.String.Compare(s1, s2, true) * mayor; 63 | } 64 | 65 | case TipoCompare.Numero: 66 | try 67 | { 68 | decimal n1, n2; 69 | n1 = decimal.Parse(s1); 70 | n2 = decimal.Parse(s2); 71 | if (n1 < n2) 72 | return menor; 73 | else if (n1 == n2) 74 | return 0; 75 | else 76 | return mayor; 77 | } 78 | catch 79 | { 80 | return System.String.Compare(s1, s2, true) * mayor; 81 | } 82 | 83 | default: 84 | 85 | return System.String.Compare(s1, s2, true) * mayor; 86 | 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /ValueDump/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace ValueDump 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new frmMain()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ValueDump/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ValueDump")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("ValueDump")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2010")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("256edd5b-80a0-4b3c-98c4-bff39871a829")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /ValueDump/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ValueDump.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ValueDump.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /ValueDump/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.1 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ValueDump.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ValueDump/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ValueDump/ValueDump.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {4E4C340D-0D20-4C96-A44B-55B86C5CEA77} 9 | WinExe 10 | Properties 11 | ValueDump 12 | ValueDump 13 | v3.5 14 | 15 | 16 | 512 17 | 18 | 19 | x86 20 | true 21 | full 22 | false 23 | $(SolutionDir)bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | false 28 | 29 | 30 | x86 31 | none 32 | true 33 | ..\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | false 38 | 39 | 40 | 41 | False 42 | ..\DirectEve\DirectEve.dll 43 | 44 | 45 | False 46 | ..\..\..\Program Files (x86)\InnerSpace\Lavish.InnerSpace.dll 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | Form 61 | 62 | 63 | frmMain.cs 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | frmMain.cs 73 | 74 | 75 | ResXFileCodeGenerator 76 | Resources.Designer.cs 77 | Designer 78 | 79 | 80 | True 81 | Resources.resx 82 | True 83 | 84 | 85 | 86 | SettingsSingleFileGenerator 87 | Settings.Designer.cs 88 | 89 | 90 | True 91 | Settings.settings 92 | True 93 | 94 | 95 | 96 | 103 | -------------------------------------------------------------------------------- /ValueDump/ValueDumpState.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace ValueDump 7 | { 8 | public enum ValueDumpState 9 | { 10 | Idle, 11 | GetItems, 12 | UpdatePrices, 13 | NextItem, 14 | StartQuickSell, 15 | WaitForSellWindow, 16 | InspectOrder, 17 | WaitingToFinishQuickSell, 18 | CheckMineralPrices, 19 | GetMineralPrice, 20 | RefineItems, 21 | SaveMineralPrices 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ValueDump/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /credits.txt: -------------------------------------------------------------------------------- 1 | Da_Teach - DirectEve.dll, original Questor source 2 | Ganondorf - fitting manager code 3 | SystemControl - Modified -------------------------------------------------------------------------------- /license.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

10 | SHARED SOURCE THEHACKERWITHIN.COM LICENSE 11 |

12 | This License governs use of the accompanying Software, and your use of the 13 | Software constitutes acceptance of this license. 14 |

15 | You may use this Software for any non-commercial purpose, subject to the 16 | restrictions in this license. Some purposes which can be non-commercial are 17 | teaching, academic research, and personal experimentation. You may also 18 | distribute this Software with books or other teaching materials, or publish the 19 | Software on websites, that are intended to teach the use of the Software. 20 |

21 | You may not use or distribute this Software or any derivative works in any form 22 | for commercial purposes. Examples of commercial purposes would be running 23 | business operations, licensing, leasing, or selling the Software, or 24 | distributing the Software for use with commercial products. 25 |

26 | You may modify this Software and distribute the modified Software for 27 | non-commercial purposes, however, you may not grant rights to the Software or 28 | derivative works that are broader than those provided by this License. For 29 | example, you may not distribute modifications of the Software under terms that 30 | would permit commercial use, or under terms that purport to require the 31 | Software or derivative works to be sublicensed to others. 32 |

33 | You may use any information in intangible form that you remember after 34 | accessing the Software. 35 |

36 | In return, we simply require that you agree: 37 |

    38 |
  1. 39 | Not to remove any copyright or other notices from the Software. 40 |
  2. 41 |
  3. 42 | That if you distribute the Software in source or object form, you will include 43 | a verbatim copy of this license. 44 |
  4. 45 |
  5. 46 | That if you distribute derivative works of the Software in source code form you 47 | do so only under a license that includes all of the provisions of this License, 48 | and if you distribute derivative works of the Software solely in object form 49 | you do so only under a license that complies with this License. 50 |
  6. 51 |
  7. 52 | That if you have modified the Software or created derivative works, and 53 | distribute such modifications or derivative works, you will cause the modified 54 | files to carry prominent notices so that recipients know that they are not 55 | receiving the original Software. Such notices must state: (i) that you have 56 | changed the Software; and (ii) the date of any changes. 57 |
  8. 58 |
  9. 59 | THAT THE SOFTWARE COMES "AS IS", WITH NO WARRANTIES. THIS MEANS NO EXPRESS, 60 | IMPLIED OR STATUTORY WARRANTY, INCLUDING WITHOUT LIMITATION, WARRANTIES OF 61 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR ANY WARRANTY OF TITLE OR 62 | NON-INFRINGEMENT. ALSO, YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU 63 | DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS. 64 |
  10. 65 |
  11. 66 | THAT CONTRIBUTORS WILL NOT BE LIABLE FOR ANY DAMAGES RELATED TO THE SOFTWARE OR 67 | THIS LICENSE, INCLUDING DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL OR INCIDENTAL 68 | DAMAGES, TO THE MAXIMUM EXTENT THE LAW PERMITS, NO MATTER WHAT LEGAL THEORY IT 69 | IS BASED ON. ALSO, YOU MUST PASS THIS LIMITATION OF LIABILITY ON WHENEVER YOU 70 | DISTRIBUTE THE SOFTWARE OR DERIVATIVE WORKS. 71 |
  12. 72 |
  13. 73 | That if you sue anyone over patents that you think may apply to the Software or 74 | anyone's use of the Software, your license to the Software ends automatically. 75 |
  14. 76 |
  15. 77 | That your rights under the License end automatically if you breach it in any 78 | way. 79 |
  16. 80 |
  17. 81 | Contributors reserves all rights not expressly granted to you in this license. 82 |
  18. 83 |
84 | 85 | 86 | -------------------------------------------------------------------------------- /output/Caldari L4/Alluring Emanations.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | EM 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /output/Caldari L4/Attack of the Drones.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | EM 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /output/Caldari L4/Cargo Delivery.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /output/Caldari L4/Covering Your Tracks.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /output/Caldari L4/Crowd Control.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /output/Caldari L4/Dread Pirate Scarlet.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Gate Key 4 | 5 | 6 | Kinetic 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Kinetic 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Kinetic 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Kinetic 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /output/Caldari L4/Duo of Death.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Kinetic 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /output/Caldari L4/Evolution.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /output/Caldari L4/Gone Berserk.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | -------------------------------------------------------------------------------- /output/Caldari L4/Guristas Extravaganza - copia.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Guristas Diamond Tag 4 | 5 | 6 | Kinetic 7 | 8 | 9 | Kinetic 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Kinetic 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /output/Caldari L4/Guristas Extravaganza.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | Guristas Diamond Tag 4 | 5 | 6 | Kinetic 7 | 8 | 9 | Kinetic 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Kinetic 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /output/Caldari L4/Infiltrated Outposts.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | EM 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | EM 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /output/Caldari L4/Intercept The Saboteurs.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Kinetic 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /output/Caldari L4/Recon (2 of 3).xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /output/Caldari L4/Recon (3 of 3).xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /output/Caldari L4/Record Cleaning.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Thermal 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | Thermal 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /output/Caldari L4/Rogue Drone Harassment.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | EM 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | EM 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /output/Caldari L4/Shipyard Theft.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /output/Caldari L4/Silence The Informant.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Kinetic 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | Kinetic 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | Kinetic 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /output/Caldari L4/Smuggler Interception.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | EM 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | EM 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /output/Caldari L4/Stop The Thief.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /output/Caldari L4/The Anomaly (1 of 3).xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Kinetic 18 | 19 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /output/Caldari L4/The Damsel In Distress - copia.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /output/Caldari L4/The Damsel In Distress.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /output/Caldari L4/The Right Hand of Zazzmatazz.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Thermal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /output/Caldari L4/The Rogue Slave Trader (1 of 2).xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | EM 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /output/Caldari L4/The Wildcat Strike.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | EM 6 | 7 | 8 | -------------------------------------------------------------------------------- /output/Caldari L4/Unauthorized Military Presence.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Kinetic 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /output/Caldari L4/Worlds Collide.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Kinetic 5 | 6 | 7 | 8 | Kinetic 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | Kinetic 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | Kinetic 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | Kinetic 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | Kinetic 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /output/Factions.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /output/Schedules.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | --------------------------------------------------------------------------------