
(*
   Feb18/96 - DN

   The following is a listing of the file data structures used in
   Operation: Overkill, version 1.11.  The game is written in
   Turbo Pascal 6.0.  The structures could be used to create
   utilities and miscellaneous programs for the game.
*)

INTERFACE

CONST
  Blanks       : STRING[80] = '                                                                              ';
  LF           : CHAR = ^j;
  Version      = '1.11';

  ALPHA        = FALSE;

  MaxUsers     = 100;
  MaxItems     = 300;
  MaxBaseItems = 100;
  MaxConfig    = 37;
  MaxDrugs     = 11;
  MaxBases     = 40;
  MaxSquadrons = 10;
  MaxX         = 25;
  MaxY         = 30;
  MaxSlots     = 12;
  MaxThumps    = 30;

  Level0  : Longint = 1000;          Level1  : Longint = 2000;
  Level2  : Longint = 4000;          Level3  : Longint = 8000;
  Level4  : Longint = 16000;         Level5  : Longint = 32000;
  Level6  : Longint = 64000;         Level7  : Longint = 128000;
  Level8  : Longint = 256000;        Level9  : Longint = 406000;
  Level10 : Longint = 556000;        Level11 : Longint = 706000;
  Level12 : Longint = 856000;        Level13 : LongInt = 10000000;

  Training0 : String[10] = 'New User';   Training1 : String[10] = 'Savian';
  Training2 : String[10] = 'Xynthian';   Training3 : String[10] = 'Zilenian';
  Training4 : String[10] = 'Dygamorian';


  Weapons : ARRAY[0..26] OF String[20] =
{0}( '',
{1}  'Steel Chain',
{2}  'Salanger',
{3}  'Natase',
{4}  'TransAxe',           { Power Pack   }
{5}  'Electric Sword',     { Power Pack   }
{6}  'Tevix-Bahn',         { Cirze Supply }
{7}  'Xendrix',            { NOT FOR SALE!  Infinex }
{8}  'Trilasm',            { ZZETs        }
{9}  'Exavator',           { ZZETs        }
{10} 'Raxhaven',           { Power Pack   }
{11} 'SanPlizer',          { Power Pack   }
{12} 'Devastator',         { Cirze Supply }
{13} 'Z-Tempest',          { Cirze Supply }
{14} 'Herculean',          { NOT FOR SALE!  Infinex }
{15} 'Trignet',            { NOT FOR SALE!  Firenet }
{16} 'Extinguisher',
{17} 'Shovel',
{18} 'Nail Gun',
{19} 'Jack Knife',
{20} 'Metal Shears',
{21} 'Wall Hook',
{22} 'Hoist',
{23} 'Propeller',
{24} 'Pickaxe',
{25} 'Sledge Hammer',
{26} 'Hydra-Jack' );

  Ammos : ARRAY[0..5] OF String[20] =
{0}('',
{1} 'ZZETs',               {  (Trilasm/Exavator) }
{2} 'Power Pack',          {  (SanPlizer/RaxHaven/E-Sword/)        }
{3} 'Cirze Supply',        {  (Z-Tempest/Devastator/Tevix-Bahn)    }
{4} 'Infinex',             {  NOT FOR SALE!! (Herculean/Xendrix)   }
{5} 'Firenet' );           {  NOT FOR SALE!! (Trignet)             }

  Equips : ARRAY[0..45] OF String[20] =
{0}  ('',
{1}   'Rations',
{2}   'Hemp Rope',
{3}   'Silencer',
{4}   'Transmitter',
{5}   'Summoner',
{6}   'MedPack',
{7}   'Thumpers',
{8}   'Galacticom',
{9}   'Gasmask',
{10}  'Duroplast',
{11}  'Aerial Scan',
{12}  'VacPack',
{13}  'Telegrasp',           { NOT FOR SALE! }
{14}  'Red Key',             { NOT FOR SALE! }
{15}  'Blue Key',            { NOT FOR SALE! }
{16}  'Green Key',           { NOT FOR SALE! }
{17}  'Techkit',             { NOT FOR SALE! }
{18}  'Rusted Wire',         { NOT FOR SALE! }{Arming Device}
{19}  'Clay Package',        { NOT FOR SALE! }{Plutonium}
{20}  'Alarm Clock',         { NOT FOR SALE! }{Timer}
{21}  'Broken Keypad',       { NOT FOR SALE! }{Keypad}
{22}  'Code Key',            { NOT FOR SALE! }{Entry Into AFBase}
{23}  'Alien Device',        { NOT FOR SALE! }{Entry Into SpaceShip}
{24}  'Trikorder',           { NOT FOR SALE! }
{25}  'Remote Control',      { NOT FOR SALE! }
{26}  'Human Skull',         { NOT FOR SALE! }
{27}  'Floppy Disk',         { NOT FOR SALE! }{Entry to Computer Silo}
{28}  'Alien Skull',         { NOT FOR SALE! }
{29}  'Hydrite Egg',         { NOT FOR SALE! }
{30}  'Lazer Key',           { NOT FOR SALE! }{Entry thru AFB doorways }
{31}  'Landmine',            { For Sale Only In AirForce Base}
{32}  'Zimmer',              { For Sale Only In AirForce Base}
{33}  'Re-Bar Scrap',
{34}  'Door Hinge',
{35}  'Broken Wrench',
{36}  'Steel Coupling',
{37}  'Pipe Fitting',
{38}  'Rotted Cabling',
{39}  'Pipe Die',
{40}  'Chrome Pipe',
{41}  'Gate Valve',
{42}  'Butane Tank',
{43}  'Drill Bit',
{44}  'I-Bar Clamp',
{45}  'Copper Tubing');


 Suits : ARRAY[0..3] OF String[20] =
{0}  ('',
{1}   'Environmental Suit',
{2}   'Combat Suit',
{3}   'Anti-G Suit');

 Armors : ARRAY[0..12] OF String[20] =
{0} ('',
{1}  'Leather',
{2}  'HeXonium',
{3}  'Laser Vest',
{4}  'Shezvarin',
{5}  'Reflecto',    { NOT FOR SALE! }
{6}  'Mudrane Sheathing',
{7}  'Breonesin Sheeting',
{8}  'Barbed Wire',
{9 } 'Asbestos Pads',
{10} 'Cuprid Vest',
{11} 'Sheet Metal',
{12} 'PolyCarbon' );

  Drugs : ARRAY[0..MaxDrugs] OF STRING[12] =
{0} ('None',
{1}  'Project #1',
{2}  'Project #2',
{3}  'Project #3',
{4}  'Project #4',
{5}  'Project #5',
{6}  'Project #6',
{7}  'Project #7',
{8}  'Project #8',
{9}  'Project #9',
{10} 'Project #10',
{11} 'Project #11');

 DrugColor : ARRAY[1..11] OF STRING[12] =
{1}  ('Transparent',
{2}   'Ivory',
{3}   'Gray',
{4}   'Brown',
{5}   'Silver',
{6}   'Purple',
{7}   'Amber',
{8}   'Crimson',
{9}   'Sapphire',
{10}  'Black',
{11}  'Gold');

  Gun : Array[0..4] of String[20] =
{0}('None',
{1} 'Plasma Cannon',            {firing}
{2} 'Spore Sprayer',            {disease/attributes}
{3} 'Gamma-Radix Cannon',       {radiation}
{4} 'Zaxtron Accelerator' );    {teleports}


  Diseases : ARRAY[0..10] OF STRING[14] =
{0} ('None',
{1}  'Pneumonia',
{2}  'Malaria',
{3}  'Yellow Fever',
{4}  'Hydrocism',
{5}  'Staph',
{6}  'Rabies',
{7}  'Polio',
{8}  'Black Plague',
{9}  'Delyria',
{10} 'Poison' );

  File_Bank      : STRING[12] = 'BANK.OO';
  File_Bases     : STRING[12] = 'BASES.OO';
  File_Control   : STRING[12] = 'CONTROL.OO';
  File_EMail     : STRING[12] = 'EMAIL.OO';
  File_Fame      : STRING[12] = 'FAME.DAT';
  File_Frontier  : STRING[12] = 'FRONTIER.OO';
  File_Inform    : STRING[12] = 'INFORM.OO';
  File_Items     : STRING[12] = 'ITEMS.OO';
  File_Msgs      : STRING[12] = 'MESSAGES.OO';
  File_Monsters  : STRING[12] = 'MONSTERS.DAT';   { wasteland monsters file }
  File_Nukem     : STRING[12] = 'NUKEM.OO';
  File_Overkill  : STRING[12] = 'OVERKILL.OO';
  File_Prison    : STRING[12] = 'PRISON.OO';
  File_Quotes    : STRING[12] = 'QUOTES.DAT';    { program file }
  File_Ship      : STRING[12] = 'SHIP.OO';
  File_Squadron  : STRING[12] = 'SQUADRON.OO';
  File_Supply    : STRING[12] = 'SUPPLY.OO';
  File_U         : STRING[12] = 'USERFILE.OO';

TYPE
  String2   = STRING[2];
  String3   = STRING[3];
  String7   = STRING[7];
  String8   = STRING[8];
  String10  = STRING[10];
  String15  = STRING[15];
  String20  = STRING[20];
  String30  = STRING[30];
  String40  = STRING[40];
  String70  = STRING[70];
  String80  = STRING[80];
  String100 = STRING[100];
  String150 = STRING[150];
  LeftRight = (Left,Right);
  SexType   = (Male,Female);

  WindType   = ARRAY[1..3] OF BYTE;
  EnemyTypes = (Monster,Player);
  LightType  = ARRAY[1..5] OF BYTE;

  Locations  = (Complex,Wasteland,Base,Prison,AFB,Silo,Ship);

  Drug_Type =  { Player Drug Type }
    RECORD
      Used   : BOOLEAN;
      Dosage : BYTE;
    END;

  Drug_Info =
    RECORD
      Name  : BYTE;  { Index into Drug Array  }
      Color : BYTE;  { Index indicating Color }
    END;

  EMailType =
    RECORD
      UserTo,
      UserFrom,
      Subj     : String20;
      StrDate  : String40;
      Kind,
      Size     : BYTE;
      IntDate  : INTEGER;
      MsgText  : ARRAY[1..20] OF String80;
    END;

  MessageType =
    RECORD
      MsgDate   : String40;
      MsgFrom   : String20;
      MsgSource : BYTE;
      MsgSubj   : String20;
      MsgSize   : BYTE;
      MsgText   : ARRAY[1..20] OF String80;
    END;

  FameType =
    RECORD
      Exp        : LongInt;      NExp       : String20;
      Crystals   : LongInt;      NCrystals  : String20;
      Level      : BYTE;         NLevel     : String20;
      Kills      : INTEGER;      NKills     : String20;
      Str        : BYTE;         NStr       : String20;
      Dex        : BYTE;         NDex       : String20;
      HPs        : INTEGER;      NHps       : String20;
      Power      : LongInt;      NPower     : String20;
      Wealth     : LongInt;      NWealth    : String20;
      Killers    : ARRAY[1..10] OF String80;
    END;

  ShipType =
    RECORD
      Cyclone1,
      Cyclone2,
      Oracle,
      Aurora      : WindType;
      OracleFound,
      ShipX,
      ShipY       : BYTE;
      ShipTime    : ARRAY[1..3] OF WORD;
      NumHydrites,
      NumDogs,
      DeviceButton,
      PrisonBlown,
      MaintDay     : BYTE;
      StartAttack  : INTEGER;  { actually, when gate guard can be attacked }
      LaunchCode   : ARRAY[1..5] OF BYTE;
    END;

  NukemType =
    RECORD
      Tipe,  { 1 = Thumper 2 = Mine 3 = ??  4 = Nukem }
      XLoc,
      YLoc,
      Level  : BYTE;
      LMTime : ARRAY[1..3] OF WORD;
    END;

  BankType =
    RECORD
      Loaner     : String20;
      AmountL    : LongInt;
      GoodCredit : Byte;
      BadCredit  : Byte;
      Collateral : Byte;
      Interest   : LONGINT;
      LoanFine   : LONGINT;
      DateLoan   : INTEGER;   { Num Logons before the Loan Must be paid }
      Informed   : BOOLEAN;
    END;

  InformType =
    RECORD
      SItem    : String40;
      UserTo,
      UserFrom : String20;
      Subj     : BYTE;
      IDate    : String40;
    END;

  BaseType =
    RECORD
      Name  : String20;
      XLoc,
      YLoc,
      Map         : BYTE;
      Sec         : INTEGER;
      Gun         : BYTE;
      Life        : INTEGER;
      Code        : String2;
      Owner       : String20;
      Pod         : BOOLEAN;
      SquadronNum : BYTE;
    END;

  SquadronType =
    RECORD
      Name,
      Leader : String20;
      Code   : String10;
      Bank   : LongInt;
    END;

  UType = { User Record }
    RECORD
      UserName  : String20;                { Alias name           }
      RealName  : String30;                { Real name            }
      Password  : String10;                { Password             }
      Expert,                              { Expert on/off        }
      Scanner,                             { Still scanner/on/off }
      Action    : BOOLEAN;                 { Action Combat on/off }
      Sex       : SexType;                 { Gender               }
      FightDelay: INTEGER;                 { Fight delay combat   }
      NextMsg   : BYTE;                    { Last Message Read    }
      CallsPerDay: BYTE;                   { Calls Per Day        }
      LastCall  : ARRAY[1..3] OF INTEGER;  { Date, Hour, Minute   }
      Crystals,                            { Water Crystals       }
      Exp       : LongInt;                 { Experience           }
      Level     : ARRAY[1..2] OF BYTE;     { Current/Logon Level  }
      Kills     : ARRAY[1..3] OF INTEGER;  { Victories, Fights, Kills }
      Training  : String20;                { Training Class       }
      Map,                                 { Map Level            }
      XLoc,                                { X Location           }
      YLoc      : BYTE;                    { Y Location           }
      Where     : Locations;               { Location Types       }
      Str,                                 { Strength             }
      Dex       : ARRAY[1..2] OF BYTE;     { Dexterity            }
      HP,                                  { Hit Points           }
      Accuracy  : ARRAY[1..2] OF INTEGER;  { Combat Accuracy      }
      Rad       : BYTE;                    { Radiation            }
      Disease   : BYTE;                    { Disease              }
      W1,                                  { Weapon 1/Ammo/Rounds }
      W2        : ARRAY[1..3] OF INTEGER;  { Weapon 2/Ammo/Rounds }
      Armor     : ARRAY[1..2] OF INTEGER;  { Armor/Hits           }
      Suit      : BYTE;                    { Suits                }
      Equip     : ARRAY[1..MaxSlots] OF BYTE;{ Equipment          }
      Medical   : ARRAY[1..MaxSlots] OF BYTE;{ Med Kit Applications}
      Moves     : INTEGER;                 { Moves                }
      Games,                               { Games Played         }
      SquadronNum: BYTE;                   { Squadron number on   }
      Stored,                              { Amount in Savings    }
      Loaned    : LongInt;                 { Amount Of Loan       }
      Vaccine   : ARRAY[1..9] OF BYTE;     { Vaccinated Diseases  }
      Drugs     : ARRAY[1..MaxDrugs] of Drug_Type;{ Drugs Owned   }
      DeathDate : INTEGER;                 { Date of Death        }
      Quote     : String80;                { Quote for Combat     }
      MiniTrik  : BOOLEAN;                 { Trikorder implant    }
      MiniGal   : BOOLEAN;                 { Galacticom implant   }
      TotalMins : INTEGER;                 { Total Minutes Used per Day }
      Flag1     : INTEGER;                 { Unused Flag1 }
      Flag2     : INTEGER;                 { Unused Flag2 }
    END;


  MType = { Monster Record }
    RECORD
      Name    : String20;                 {Monsters Name               }
      Sex     : SexType;                  { Gender                     }
      Str,                                {Monsters Strength Max       }
      Dex     : BYTE;                     {Monsters Dexterity Max      }
      HP      : ARRAY[1..2] OF INTEGER;   {Monsters Max Health         }
      W1,                                 { Weapon 1/Ammunition/Rounds }
      W2      : ARRAY[1..3] OF INTEGER;   { Weapon 2/Ammunition/Rounds }
      Armor   : ARRAY[1..2] OF INTEGER;   { Armor Type/Hits left       }
      Suit    : BYTE;                     { Suit type                  }
      Equip   : ARRAY[1..MaxSlots] OF BYTE;{ Equipment                  }
      Level   : BYTE;                     { what level the monster is  }
      Special : BYTE;                     { Special Attack             }
      MType,                              { 0=Humanoid 1=Beast         }
      Bravery,                            { How brave they are 100 best}
      Rad,                                { Radiation of the thing     }
      Disease : BYTE;                     { Disease the Monster has    }
      Desc,                               { Description of the monster }
      Talk    : ARRAY[1..4] OF String70;  {  2-Speech 2-Translated     }
    END;

  PrisonType =
    RECORD
      Prisoner : String20;
      Cell     : CHAR;
      Term     : INTEGER;
    END;

  DescType =
    RECORD
       Desc   : ARRAY[1..2] OF BYTE;
       Line1,
       Line2  : String80;
     END;

  QuoteType =
    RECORD
      QLine : String80;
    END;

  ItemType =
    RECORD
      ItemType : CHAR;
      ItemNum  : LongInt;
      XLoc,
      YLoc,
      Map      : BYTE;
      Where    : Locations;
      ItemRds,
      ItemAmmo : INTEGER;
    END;


  OKType =
    RECORD
      Ovie_Alive   : BOOLEAN;
      Queen_Alive  : BOOLEAN;
      ZZilen_Alive : BOOLEAN;
      Winner       : String20;
      Date         : String40;
    END;

  SupplyType =
    RECORD
      Wps  : ARRAY[1..15] OF BYTE;   { up to 255 items in each category }
      Eqp  : ARRAY[1..32] OF BYTE;
      Sts  : ARRAY[1..2]  OF BYTE;
      Arm  : ARRAY[1..5]  OF BYTE;
    END;

  ControlType =
    RECORD
      OvieItem    : BYTE;   { piece of equipment to make Overkill fight }
      PrisonMap   : BYTE;   { Prison # to use }
      PrisonKeys  : ARRAY[1..9] OF BYTE; { 14,15,16 random of each cell }
      TalkMonNums : ARRAY[1..5] OF INTEGER; { monsters that "talk" }
      DrugInfo    : ARRAY[1..11] OF Drug_Info;
    END;

  AFBType =
    RECORD
      XLoc,
      YLoc,
      Map   : BYTE;
    END;

