seant posted 06-13-2000 11:29 AM [at the Ambrosia web-boards] [Offsets added by Marko Klockner] Ok. I'm not going to post the source to the progam I was talking about, because I discovered it's on the EV add-ons page (http://www.ambrosiasw.com/cgi-bin/vftp/dl-redirect.pl?path=ev/utilities&file=EVDeEncryptor10d1.sit.hqx). If you want this program to work with EVO files, go in the code and change all the occurances of MpïL to OpïL. Alternately, I know you can do the same thing in ResEdit. If I remember correctly, look under the "code" resource and make the same changes. I could be wrong; it's been a while. What I will do is pass along the pilot file specs I received from Ambrosia. The spec are for EV pilot files, but I don't think the structure has changed (If anyone from Ambrosia is reading this, can you pass along a newer version of the pilot file specs, if this one is out of date?). ======= /* Escape Velocity Player File Specification by Matt Burch Revision 1 - 4/5/97 Valid for pilot files created by EV 1.0.4 or later See EV Bible for additional information Note: EV pilot files are encrypted with Andrew Welch's SimpleCrypt algorithm, available at http://www.ambrosiasw.com/XXXXXXXXXXX. The code key used to decrypt EV 'MpïL' resources is 0xABCD1234. (pretty imaginative eh?) */ resource 128 Start- struct PlayerFileDataStruct // 'MpïL' resource 128 in the pilot Offset $: file { 00-01 short lastStellar; // last stellar object to be visited (0-1499) short shipClass; // player's ship class (0-63) short cargo[6]; // current quantity of each of the six types of basic cargo short unused; // unused 12-13 short fuel; // current fuel quantity, 100 units per jump 14-19 short month, day, year; // current date 001A-07EB short exploration[1000]; // current state of each system's exploration: <= 0 means unexplored, 1 means player has visited, 2 means player has visited and landed within this system 07EA short itemCount[128]; // how many of each type of outfit item owned 08EA short legalStatus[1000]; // legal status in each system (0 = neutral) 1066 short weapCount[64]; // how many of each type of weapon the player's ship has 10E6 (?) short ammo[64]; // how much ammo each weapon has (see EV Bible for restrictions and variations on ammo usage) 11BA-11BD long cash; // how many credits player has 11BE MissionObjectives missionObj[8]; // data on currently-running missions' objectives [200?] MissionData missionData[8]; // data on currently-running missions' parameters 1E3E Boolean missionBit[256]; // the state of each of the mission bits 1962 (?) Boolean stelDominated[1500]; // whether or not each of 1F3E the stellar objects is dominated 251A short escortClass[36]; // stores the player's current escorts: for each one: -1 means not an escort data item, 0-63 means a captured escort (the number is the escort's ship class), 1000-1063 means a hired escort. (don't make EV crash by abusing the ability to have more than the normal number of escorts!) 2562 short fighterClass[36]; // stores the player's current deployed fighters: for each one: -1 means not a fighter data item, 0-63 means a fighter of a certain class 25AA-25AD long rating; // player's combat rating }; resource 129 (universe-settings and missions) struct AltPlayerFileDataStruct // 'MpïL' resource 129 in the pilot file - the name of this resource is the name of the player's ship { short versionInfo; // used internally short strictPlayFlag; // 0 = strict play off short stelShipCount[1500]; // number of defense ships remaining at each planet short personActive[512]; // flag to set each 'pers' active or not short personGrudge[512]; // flag to give a 'pers' a grudge against the player short unused[64]; // ignored short stelAnnoyance[1500]; // keeps track of planets' propensity to overthrow your rule Boolean seenIntroScreen; // the player has seen the game intro screen short disasterTime[128]; // time left on active disasters (<0 = inactive) short disasterStellar[128]; // where each disaster is currently active short junkQty[128]; // how much of each type of 'junk' the player has aboard short priceFlux[2][2]; // global price fluctuations }; struct MissionObjectives { Boolean active; // mission is active Boolean travelObjComplete; // player has visited assigned destination Boolean shipObjComplete; // player has completed special-ship assignment Boolean missionFailed; // mission was failed DateTimeRec missionDeadline; // mission completion deadline (see Inside Mac) }; struct MissionData { short destStellar; // destination stellar object (0-1499) short destSystem; // destination system (0-999) short returnStellar; // return stellar object (0-1499) short specialShipCount; // number of remaining special ships short specialShipDude; // special ship 'dude' type short specialShipGoal; // special ship goal short specialShipBehavior; // special ship behavior short specialShipSyst; // special ship system short cargoType, cargoQty; // mission cargo type and quantity short pickupMode, dropoffMode; // mission cargo pickup/dropoff mode short scanGovt; // which govt tries to scan the player for this mission (0-127, or -1 if none) short compBitSet[2]; // which bits to set on completion short compGovt, compReward; // successful-mission government and reward short failBitSet; // which bit to set on failure long pay; // how many credits to give player upon successful completion short specialShipsKilled, specialShipsBoarded; // how many special ships have been killed or boarded short specialShipsDisabled; // how many special ships have been disabled short specialShipsJumpedIn, specialShipsJumpedOut; // how many special ships have jumped in or out short initialShipCount; // how many special ships there were at the start of the mission Boolean failIfScanned; // fail the mission if the player is scanned Boolean canAbort; // player can abort this mission Boolean cargoLoaded; // mission cargo is aboard short briefText, quickBriefText, loadCargoText, dropOffCargoText, compText, failText; // 'dësc' ID's for various text messages short timeLeft; // number of days remaining short specialShipNameResID; // ID of 'STR#' resource used to name the special ships short specialShipNameIndex; // index of the string within the above 'STR#' resource short unused; // ignored short specialShipDelay; // short unused2; // ignored unsigned short flags; // mission flags (see EV Bible) short auxShipCount, auxShipDude, auxShipSyst, auxShipsJumpedIn, auxShipDelay, auxShipsLeft; // similar to above values, but for auxShips char specialShipName[32]; // the name of the special ship(s) Str255 missionName; // the name of the mission }; ------------------