home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / BBS_GAME / LOD400E.ZIP / PROGRAMR.ZIP / GLOBALS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-03-01  |  39KB  |  1,240 lines

  1. unit globals;
  2.  
  3. interface
  4. uses emsalloc;
  5.  
  6. const
  7.  compilerev=2;
  8.  
  9.  nbspec=8;
  10.  numbasestartspec=5;
  11.  numueqp=6;
  12.  numudev=18;
  13.  numdev=350;
  14.  numobj=2048;
  15.  numst=50;
  16.  numprod=3;
  17.  numbase=75;
  18.  numspell=5;
  19.  numbforsale=8;
  20.  numterrain=50;
  21.  hinc=45;
  22.  
  23.  maxusers=255; {not fully implemented}
  24.  
  25.  maxmapx=125;
  26.  maxmapy=125;
  27.  maxmapz=1;
  28.  maxgenobj=255;
  29.  maxtover=64;
  30.  maxquest=32;
  31.  
  32.  numca=100;
  33.  maxtav=50;
  34.  numtcode=27;
  35.  maxinclude=10;
  36.  maxtrestrict=4;
  37.  
  38.  maxpurparts=10;
  39.  numpurparts=9;
  40.  kirkpart=1;
  41.  xebocpart=2;
  42.  drakpart=3;
  43.  xebpart=4;
  44.  tranliuspart=5;
  45.  vayderrpart=6;
  46.  snowguypart=7;
  47.  lokipart=8;
  48.  serpinepart=9;
  49.  
  50.  ammomax=20;
  51.  vortexbattmax=9999;
  52.  
  53.  maxteams=10;
  54.  maxteamplayers=5;
  55.  
  56.  doauth: boolean=true;
  57.  
  58.  maxmon=300;
  59.  
  60.  maxnab=15;
  61.  
  62.  maxpmask=10;
  63.  
  64.  gtpacketver = 'D';
  65.  
  66.  regfilename1: string[5] ='LO';
  67.  
  68.  gamename='Land Of Devastation';
  69.  gamename3: string[32] = 'Land Of Devastation';
  70.  authname='Scott M. Baker';
  71.  vernum='4.00';
  72.  
  73.  regfilename3: string[5] ='G.DAT';
  74.  gamename2: string[32] = 'Land Of Devastation';
  75.  authfile1: string[5] = 'AUTH';
  76.  regfilename2: string[5] = 'DRE';
  77.  
  78.  strdef_maxreplace = 5;
  79.  
  80.  hunt: word = 0;
  81. type
  82.  tpass = (Imp, Pass, Water, Lava);
  83.  strptr=^string;
  84.  storetype= (NoStore,Weap,Armr,Supp,Ammo,BaseReact,BaseMsc,BaseDef,BaseMoat,
  85.              BaseWeap,computer,weaplr,troysteak,troydisk,gsrz,BaseFact,EEEE,
  86.              town2,town3,town4,town5,town6,town7,town8,town9,
  87.              kill,BasePack,BaseScav,BaseEne,BaseMed,AcmeFort,AcmeWeap,
  88.              AcmeROM,endstore);
  89.  
  90.  maptype=   array[1..maxmapx,1..maxmapy] of byte;
  91.  mapptr=    ^maptype;
  92.  devapptype=(Radio,Medkit,Weapon,RangeWeapon,Armor,AML,BAD,LRScan,AmmoP,
  93.              medline,rope,rations,scanner,stealth,gblaster,armorn,grenade,
  94.              cyceye,deathbadge,warper,communicator,reactor,comm,deffield,
  95.              moat,bweap,laptop,rom,troysteakp,tele,recharge,pylonkey,
  96.              vortexbatt,unitran,mine,boat,mapper,cryo,bgen,MapPack,
  97.              genobjapp);
  98.  
  99.  sextype =  (male,female,other);
  100.  
  101.  bigpicident=string[8];
  102.  
  103.  ogtypetype= (ogheader,ogfooter,ograndtext,ogconvert,ogadditem,ogreplicate,ogfail);
  104.  
  105.  iftypetype= (ifTerrain,ifNTerrain,ifDoLoki,ifDoQuest,IfQuest,IfNQuest,
  106.               ifPuritron,ifNPuritron,ifLevel,ifNLevel,ifExper,IfNExper,
  107.               ifDoSerpine,ifMindist,ifMaxdist,IfTestX,ifNTestX,IfTestY,
  108.               ifNTestY,IfTestZ,IfNTestZ);
  109.  
  110.  ifptr=^iftype;
  111.  iftype=record
  112.          iftype: iftypetype;
  113.          data: longint;
  114.          next: ifptr;
  115.         end;
  116.  
  117.  genobjtype=record
  118.              tag: word;
  119.              ogtype: ogtypetype;
  120.              tstart,tend: word;
  121.              iflist: ifptr;
  122.              cnvin,cnvout: word;
  123.             end;
  124.  
  125.  genobjptr=^genobjtype;
  126.  
  127.  genobjarray=array[1..maxgenobj] of genobjptr;
  128.  
  129.  tovertype = record
  130.               x,y,z: word;
  131.               typ: byte;
  132.              end;
  133.  
  134.  toverarraytype = array[1..maxtover] of tovertype;
  135.  
  136.  puritronunit=record
  137.                ishere: boolean;
  138.                userrealname: string[25];
  139.                reset: boolean;
  140.                blah: array[1..24] of byte;
  141.               end;
  142.  
  143.  puritrontype=record
  144.                parts: array[1..maxpurparts] of puritronunit;
  145.                blah: array[1..200] of byte;
  146.  
  147.                active: boolean;
  148.               end;
  149.  
  150.  CasinoUnit=record                        { 1 - Coin Flip    }
  151.              timesplayed: longint;        { 2 - Guess number }
  152.              timeswon: longint;           { 3 - Slot Machine }
  153.              timeslost: longint;          { 4 - Trivia       }
  154.              moneyspent: comp;
  155.              moneywon: comp;
  156.              moneylost: comp;
  157.              lastplayer: string[25];
  158.              blah: array[1..10] of word;
  159.             end;
  160.  
  161.  MDataType=record
  162.              games: array[1..12] of casinounit;
  163.  
  164.              donations: comp;
  165.              tax: comp;
  166.              plays: word;
  167.              timeused: word;
  168.              datestamp: longint;
  169.              totalplays: longint;
  170.              totaltime: longint;
  171.  
  172.              tover: toverarraytype;
  173.              numtover: word;
  174.  
  175.              blah: array[1..512] of byte;
  176.             end;
  177.  
  178.  datasettype= record
  179.                sdstart,sdend: word;
  180.                name: strptr;
  181.                author: strptr;
  182.                prodname: array[1..3] of strptr;
  183.                menustem: string[8];
  184.                cityname: array[1..10] of strptr;
  185.                hisstr: strptr;
  186.                herstr: strptr;
  187.                itsstr: strptr;
  188.                hestr:  strptr;
  189.                shestr: strptr;
  190.                itstr:  strptr;
  191.                mhimstr: strptr;
  192.                fhimstr: strptr;
  193.                ihimstr: strptr;
  194.                obstart,obend: word;
  195.  
  196.                egadoccent,       egacomcent,      egaclone,
  197.                egapurroom,       egafinance,      egasurr,
  198.                egafortatck,      egafortcnfg,     egatavern,
  199.                egabartalk,       egaftrade,       egafortfin,
  200.                egafortret,       egafortmm1,      egafortbad,
  201.                egafortmain,      egalaptop,       egaeeeebig,
  202.                egakillbig,       egahortbig,      egahortstor,
  203.                egatport,         egateam,         egatquart,
  204.                egatele1,         egatele2,        egatranlius,
  205.                egaAcmeFort,      egaAcmeWeap,     egaAcmeweapsmith,
  206.                egaAcmeTech,      egaAcmeMain,     egaLoki,
  207.                egaTadsu:   bigpicident;
  208.  
  209.                charpic: array[male..other] of bigpicident;
  210.  
  211.                egatown: array[1..10] of bigpicident;
  212.  
  213.                kelpreward: longint;
  214.  
  215.                emwarpmine: byte;
  216.  
  217.                townsalv: array[1..10] of word;
  218.               end;
  219.  
  220.  sysoptype=  record
  221.               asciitop10: string[128];
  222.               ansitop10: string[128];
  223.               maxtime: word;
  224.              end;
  225.  
  226.  generaltype=record
  227.               startstr: word;            { New Player Starting values }
  228.               startdex: word;
  229.               startagl: word;
  230.               starthp: word;
  231.               startmoney: word;
  232.               startdev1: string[25];
  233.               startdev2: string[25];
  234.               startdev3: string[25];
  235.  
  236.               basecost: longint;         { Cost of fortress           }
  237.               lev2exp: longint;          { level 2 experience         }
  238.               expmul: byte;              { Experience multiplier      }
  239.               levlim: byte;              { Level repeate              }
  240.               levpts: byte;
  241.  
  242.               basestartspec: array[1..numbasestartspec] of string[25];
  243.  
  244. {              basestartweap: string[25];
  245.               basestartdef: string[25];
  246.               basestartreact: string[25];
  247.               basestartmoat: string[25];
  248.               basestarttele: string[25];}
  249.  
  250.               basestartene: longint;
  251.               basemaxitems: word;
  252.               playermaxbases: word;
  253.  
  254.               janitorpay: longint;
  255.               killobj: boolean;
  256.  
  257.               statmodeavail: boolean;
  258.               alphamodeavail: boolean;
  259.               reflexmodeavail: boolean;
  260.  
  261.               reflexdelay: word;
  262.               reflexhit: word;
  263.               reflexincr: word;
  264.               alphadelay: word;
  265.               alphahit: word;
  266.  
  267.               LRAnsiLx: byte;
  268.               LRAnsiLy: byte;
  269.               LRAnsiGx: byte;
  270.               LRAnsiGy: byte;
  271.               LRAnsiTx: byte;
  272.               LRAnsiTy: byte;
  273.               LRAnsiBf: byte;
  274.               LRAnsiBb: byte;
  275.               LRAnsiCx: byte;
  276.               LRAnsiCy: byte;
  277.               LRAnsiCf: byte;
  278.               LRAnsiCb: byte;
  279.  
  280.               minloanday: byte;
  281.  
  282.               FSAnsiFx: byte;
  283.               FSAnsiFy: byte;
  284.               FSAnsiFf: byte;
  285.               FSAnsiFb: byte;
  286.               FSAnsiTx: byte;
  287.               FSAnsiTy: byte;
  288.               FSAnsiTf: byte;
  289.               FSAnsiTb: byte;
  290.  
  291.               loanint: byte;
  292.               bankint: byte;
  293.               gameint: byte;
  294.               loanmax: byte;
  295.  
  296.               PTAnsiPx: byte;
  297.               PTAnsiPy: byte;
  298.               PTAnsiPf: byte;
  299.               PTAnsiPb: byte;
  300.               PTAnsiNxo: byte;
  301.               PTAnsiNyo: byte;
  302.               PTAnsiNf: byte;
  303.               PTAnsiNb: byte;
  304.  
  305.               purmoney: array[1..numpurparts] of longint;
  306.               purexp: array[1..numpurparts] of longint;
  307.  
  308.               daystodel: word;
  309.               daystodeldead: word;
  310.  
  311.               inbankmax: longint;
  312.               incasmax: longint;
  313.               inloanmax: longint;
  314.  
  315.               monsellmult: real;
  316.  
  317.               vbattammoeff: array[1..ammomax] of byte;
  318.               vbattammonames: array[1..ammomax] of string[20];
  319.               numvbattammo: word;
  320.  
  321.               PTAnsinx: byte;
  322.               PTAnsiny: byte;
  323.               PTAnsiRx: byte;
  324.               PTAnsiRy: byte;
  325.               PTAnsiRf: byte;
  326.               PTAnsiRb: byte;
  327.               PTAnsiAx: byte;
  328.               PTAnsiAy: byte;
  329.               PTAnsiAf: byte;
  330.               PTAnsiAb: byte;
  331.  
  332.               purquest: array[1..numpurparts] of word;
  333.  
  334.               taxlevel: byte;
  335.               taxpercent: byte;
  336.  
  337.               maxfortattack: byte;
  338.  
  339.               trivia_cost,
  340.               trivia_pay,
  341.               caslimit: longint;
  342.  
  343.               porig: array[1..maxpmask] of byte;
  344.               pnew: array[1..maxpmask] of byte;
  345.  
  346.               LRAnsiC2x: byte;
  347.               LRAnsic2y: byte;
  348.  
  349.               maxtransport: byte;
  350.  
  351.               deathperday: byte;
  352.  
  353.               maxbasemoney: comp;
  354.               maxbaseenergy: comp;
  355.  
  356.               unused: word;
  357.               basesalvage: word;
  358.  
  359.               vortexeneprice: word;
  360.  
  361.               ACMEthreeroundprice: word;
  362.               ACMEaccprice: array[1..3] of word;
  363.               ACMEintprice: array[1..3] of word;
  364.               ACMEuniprice: word;
  365.               ACMEstunprice: word;
  366.  
  367.               stun5odds: word;
  368.               stun4odds: word;
  369.               stun3odds: word;
  370.               stun2odds: word;
  371.               stun1odds: word;
  372.               stunaddodds: word;
  373.  
  374.               scavratio: word;
  375.               maxscavmoney: longint;
  376.  
  377.               scavmedratio: word;
  378.               maxscavmed: longint;
  379.  
  380.               scaveneratio: word;
  381.               maxscavene: longint;
  382.  
  383.               ACMEscandecloakprice: word;
  384.               ACMEarmor1price: word;
  385.               ACMEarmor2price: word;
  386.               ACMEarmor3price: word;
  387.  
  388.               ACMEarmor1bp: longint;
  389.               ACMEarmor2bp: longint;
  390.               ACMEarmor3bp: longint;
  391.  
  392.               taxlevel2: byte;
  393.               taxpercent2: byte;
  394.               discpercent: byte;
  395.  
  396.               moneyperlevel: longint;
  397.               xebocmax: word;
  398.  
  399.               numquest: word;
  400.  
  401.               raiseall: boolean;
  402.              end;
  403.  
  404.  devdeftype=record
  405.              num: word;               { device number               }
  406.              var1,var2: longint;      { start up variables          }
  407.              x,y,z: byte;             { object x,y,z position       }
  408.              devapp: devapptype;      { application type            }
  409.              useleft: word;
  410.              maxuse: word;
  411.              decuse: boolean;
  412.              name: string[18];        { device name                 }
  413.              store: set of storetype; { store it sells at           }
  414.              cost: comp;              { how much it costs           }
  415.              usable: boolean;         { can it be used?             }
  416.              pic: string[8];          { ansi picture identifier     }
  417.              picnum: word;
  418.             end;
  419.  
  420.  devdeftptr=^devdeftype;
  421.  devdefarray= array[0..numdev] of devdeftptr;
  422.  
  423.  devicetype=record
  424.              num: word;               { Device Numbers              }
  425.              var1,var2: longint;      { generic variables           }
  426.              x,y,z: byte;             { object x,y,z position       }
  427.              devapp: devapptype;      { application type            }
  428.              useleft: word;           { maximum uses and uses left  }
  429.             end;
  430.  
  431.  pdevicetype = ^devicetype;
  432.  
  433.  
  434.  
  435.  devarray=  array[1..numudev] of devicetype;
  436.  usertype=  record
  437.              realname: string[35];    { real name of user           }
  438.              alias: string[25];       { user's alias                }
  439.              devices: devarray;
  440.              weapon1: devicetype;     { Close combat weapon         }
  441.              weapon2: devicetype;     { Ranged combat weapon        }
  442.              auxweapon: devicetype;   { Auxilary close weapon       }
  443.              armor: devicetype;       { armor                       }
  444.              medline: devicetype;     { Automated medical lining    }
  445.              laptop: devicetype;      { GS-224 Laptop               }
  446.              hitpts,hitmax: word;     { user's hitpoints and hitmax }
  447.              unused_1: longint;
  448.              str,dex,agl: word;       { strength, dexterity, agil   }
  449.              lvl: word;               { level                       }
  450.              exp: comp;               { experience                  }
  451.              money: comp;             { money                       }
  452.              bank: comp;              { money in the bank           }
  453.              alive: boolean;          { alive ?                     }
  454.              x,y,z: byte;             { x,y,z coords                }
  455.              hunger: word;            { hunger points               }
  456.              expert: boolean;         { expert on?                  }
  457.              combat: longint;         { battles faught in           }
  458.              flee: longint;           { battles fleed in            }
  459.              surrender: longint;      { battles surrendered in      }
  460.              kills: longint;          { number of monsters killed   }
  461.              hits: longint;           { times he hit somebody       }
  462.              misses: longint;         { times he missed somebody    }
  463.              lastread: word;          { message base lastread ptr   }
  464.              enhansi: boolean;        { used enhanced ansi if avail }
  465.              clrmap: boolean;         { color map?                  }
  466.              forceansi: boolean;      { force ansi on?              }
  467.              compass: boolean;
  468.              dietoff: boolean;
  469.              products: array[1..numprod] of comp;
  470.              buysteak: boolean;
  471.              getdisk: boolean;
  472.              didtetris: boolean;
  473.              rent: longint;
  474.              rentday: word;
  475.              lastcity: byte;          { last city user was at       }
  476.              combattext: byte;        { Entry in monsters.txt w/ combat txt }
  477.              timetoday: word;
  478.              sex: sextype;
  479.              flags: word;
  480.              quests: longint;
  481.              janitor: longint;
  482.              casacct: longint;
  483.              maintrun: byte;
  484.              deathtoday: byte;
  485.              loan: longint;
  486.              maintdelcount: word;
  487.              team: byte;
  488.              fortattack: byte;
  489.              combatmode: byte;
  490.              anchorx,anchory,anchorz: byte; {EMWARP anchor point}
  491.              addpts: byte;
  492.              unused_2: array[1..12] of byte;
  493.             end;
  494.  
  495.  clonetype=record
  496.             realname: string[35];
  497.             alias: string[25];
  498.             hitmax: word;
  499.             str,dex,agl: word;
  500.             lvl: word;
  501.             exp: comp;
  502.             alive: boolean;
  503.             blah: array[1..10] of byte;
  504.            end;
  505.  
  506.  useridxtype= record
  507.                x,y,z: byte;
  508.                alive: boolean;
  509.               end;
  510.  
  511.  useridxarray= array[1..maxusers] of useridxtype;
  512.  
  513.  
  514.  dstrarray= array[1..numst] of word;
  515.  combattype=record
  516.              player: usertype;        { player who is in combat     }
  517.              typ: byte;
  518.              talkto: word;
  519.              dudepic: bigpicident;
  520.              desc: dstrarray;         { description of player       }
  521.              fleetxt: dstrarray;      { what to say when player runs}
  522.              fleeran: dstrarray;      { random flee text            }
  523.              killhim: dstrarray;      { when player kills monster   }
  524.              disintequip: array[1..numueqp] of byte;
  525.              disintinv: array[1..numudev] of byte;
  526.              disintper: word;
  527.              berserk: boolean;
  528.              isreal: word;
  529.              except0: boolean;
  530.              nosurr: boolean;         { monster does not allow surrender }
  531.              nosell: boolean;         { monster will not sell equipment }
  532.              nab: array[1..maxnab] of word;  {Nuke-all-but}
  533.              numnab: word;
  534.              stun: word;              { # turns player is stunned for }
  535.              camped: boolean;
  536.             end;
  537.  combatptr= ^combattype;
  538.  
  539.  includetype=record
  540.               code: string[2];
  541.               guy1,guy2: byte;
  542.              end;
  543.  cstrtype=record
  544.            numinclude: word;
  545.            include: array[1..maxinclude] of includetype;
  546.            numstr: word;
  547.            strings: dstrarray;
  548.           end;
  549.  cstrptr=^cstrtype;
  550.  cstrarray=array[1..numca] of cstrptr;
  551.  
  552.  monsterrec= record
  553.               mindist: word;
  554.               maxdist: word;
  555.               origx: byte;
  556.               origy: byte;
  557.               origz: byte;
  558.               line: word;
  559.               str,dex,agl: byte;
  560.               ifalive: byte;
  561.               isreal: byte;
  562.               flags: byte;
  563.               trestrict: array[1..maxtrestrict] of byte;
  564.              end;
  565.  
  566.  objptr= ^devicetype;
  567.  objarray= array[1..numobj] of objptr;
  568.  terraintype= record
  569.                dng: word;
  570.                typ: string[12];
  571.                map: string[2];
  572.                clr: byte;
  573.                pas: tpass;
  574.               end;
  575.  terrainarray= array[0..numterrain] of terraintype;
  576.  
  577.  baserec = record
  578.             x,y,z: byte;
  579.             owner: byte;
  580.             name: string[20];
  581.             password: string[8];
  582.             active: boolean;
  583.             products: array[1..numprod] of longint; { Products on hand      }
  584.             prodfs:   array[1..numprod] of longint; { Products for sale     }
  585.             prodsp:   array[1..numprod] of word;    { Prod sell prices      }
  586.             prodbp:   array[1..numprod] of word;    { Prod buy prices       }
  587.             prodbm:   array[1..numprod] of longint; { Prod buy money        }
  588.             med:      longint;                      { Medkit doses on hand  }
  589.             medfs:    longint;                      { Medkit doses for sale }
  590.             medprice: word;                         { Price of medkit dose  }
  591.             energyfs: longint;                      { Energy for sale       }
  592.             energyprice: word;                      { Energy price          }
  593.             energy:  comp;                          { Energy on hand        }
  594.             money:   comp;                          { money on hand         }
  595.             teleprice: longint;                     { teleportation price   }
  596.             spec:    array[1..nbspec] of devicetype;{ Specialty Devices     }
  597.  
  598.             forsale: array[1..numbforsale] of devicetype;    { Devices for sale      }
  599.             saleprice: array[1..numbforsale] of longint;     { For sale prices       }
  600.  
  601.             basereg: boolean;
  602.  
  603.             tollprice: longint;
  604.  
  605.             flags: longint;
  606.  
  607.             blah: array[1..8] of byte;
  608.            end;
  609.  
  610.  basearray= array[1..numbase] of baserec;
  611.  baseptr = ^basearray;
  612.  routept=record
  613.           x,y: byte;
  614.          end;
  615.  routetype = array[1..128] of routept;
  616.  
  617.  questtype= record
  618.              award: longint;
  619.              mask: longint;
  620.              pts: byte;
  621.             end;
  622.  questarray = array[1..maxquest] of questtype;
  623.  
  624.  taverntype= record
  625.               personname: string[20];
  626.               personnum: word;
  627.               townnum: word;
  628.              end;
  629.  
  630.  tavernptr = ^taverntype;
  631.  
  632.  tavernarray=array[1..maxtav] of tavernptr;
  633.  
  634.  telecodetype=record
  635.                c: array[1..4] of byte;
  636.                d: byte;
  637.                z,x,y: byte;
  638.               end;
  639.  telearray=array[1..numtcode] of telecodetype;
  640.  
  641.  
  642.  
  643.  teamtype=   record
  644.               players: array[1..maxteamplayers] of byte;
  645.               numplayers: byte;
  646.               name: string[30];
  647.               pword: string[8];
  648.              end;
  649.  
  650.  teamarray=  array[1..maxteams] of teamtype;
  651.  
  652.  string35= string[35];
  653.  
  654.  getattrtype = (gaStr,gaDex,gaAgl);
  655. const
  656.  prodbuy: array[1..numprod] of word = (10,10,10);
  657.  citypricemul: array[1..10] of real = (1,1.25,2.13,3.75,4.22,4.75,5.11,5.30,5.75,6.91);
  658. type
  659.  laptoprec=record
  660.             mask: longint;
  661.             cmdname: string[8];
  662.             cmdext: string[3];
  663.             size: longint;
  664.             date: string[8];
  665.             time: string[6];
  666.            end;
  667. const
  668.  sot=#1;
  669.  ack=#6;
  670.  nak=#21;
  671.  numlapcmd=28;
  672.  LapCmd: array[1..numlapcmd] of  laptoprec =
  673.   ((mask:      0; cmdname: 'DIR';      cmdext: 'COM'; size:   13142; date: '04-27-12'; time: '10:04p'),
  674.    (mask:      0; cmdname: 'EXIT';     cmdext: 'COM'; size:    2714; date: '04-27-12'; time: '10:04p'),
  675.    (mask:      0; cmdname: 'CHKDSK';   cmdext: 'COM'; size:    9535; date: '04-27-12'; time: '10:04p'),
  676.    (mask:      0; cmdname: 'COPY';     cmdext: 'COM'; size:   31244; date: '04-27-12'; time: '10:04p'),
  677.    (mask:      1; cmdname: 'NOTES';    cmdext: 'EXE'; size:   41797; date: '08-12-13'; time: ' 3:39a'),
  678.    (mask:      2; cmdname: 'AUTONAV';  cmdext: 'EXE'; size:  237421; date: '07-26-14'; time: ' 8:17a'),
  679.    (mask:      4; cmdname: 'TRANSFER'; cmdext: 'EXE'; size:   77842; date: '11-09-13'; time: ' 2:32p'),
  680.    (mask:      8; cmdname: 'RANKINGS'; cmdext: 'EXE'; size:   23292; date: '02-17-13'; time: ' 7:24a'),
  681.    (mask:     16; cmdname: 'VIEWLOG';  cmdext: 'COM'; size:   10654; date: '09-30-13'; time: '11:24p'),
  682.    (mask:     32; cmdname: 'EMWARP';   cmdext: 'EXE'; size:  139772; date: '03-11-14'; time: ' 2:49a'),
  683.    (mask:     64; cmdname: 'FORTLIST'; cmdext: 'EXE'; size:   34229; date: '08-14-14'; time: ' 6:52p'),
  684.    (mask:    128; cmdname: 'DIET';     cmdext: 'EXE'; size:  124772; date: '12-03-13'; time: '11:24a'),
  685.    (mask:    256; cmdname: 'CSTATS';   cmdext: 'COM'; size:   27429; date: '07-22-13'; time: ' 3:33a'),
  686.    (mask:    512; cmdname: 'LRSCAN';   cmdext: 'EXE'; size:  118245; date: '09-27-13'; time: ' 1:24p'),
  687.    (mask:   1024; cmdname: 'SCANNER';  cmdext: 'EXE'; size:   96014; date: '04-26-14'; time: ' 7:30a'),
  688.    (mask:   2048; cmdname: 'TROYINFO'; cmdext: 'EXE'; size:  107323; date: '07-19-14'; time: '10:29p'),
  689.    (mask:   4096; cmdname: 'COMMLINK'; cmdext: 'COM'; size:   27094; date: '01-21-14'; time: ' 2:36p'),
  690.    (mask:   8192; cmdname: 'TETRIS';   cmdext: 'EXE'; size:   63294; date: '03-18-13'; time: ' 7:14a'),
  691.    (mask:  16384; cmdname: 'APPRAISE'; cmdext: 'EXE'; size:   72036; date: '04-13-14'; time: ' 9:15p'),
  692.    (mask:  32768; cmdname: 'TCODE';    cmdext: 'EXE'; size:  102997; date: '04-26-14'; time: ' 6:39a'),
  693.    (mask:  65536; cmdname: 'HISTORY';  cmdext: 'COM'; size:   56024; date: '04-23-14'; time: ' 7:04p'),
  694.    (mask: 131072; cmdname: 'WINDOWS';  cmdext: 'EXE'; size:69045234; date: '10-02-13'; time: ' 2:29p'),
  695.    (mask: 262144; cmdname: 'FORTINV';  cmdext: 'EXE'; size:   10324; date: '05-23-14'; time: ' 6:19a'),
  696.    (mask: 524288; cmdname: 'BARTALK';  cmdext: 'COM'; size:   25329; date: '01-19-14'; time: ' 2:22p'),
  697.    (mask:1048576; cmdname: 'SPWEAP';   cmdext: 'COM'; size:   19234; date: '03-22-14'; time: '11:59p'),
  698.    (mask:2097152; cmdname: 'WEAPSMTH'; cmdext: 'EXE'; size:   10926; date: '07-31-14'; time: ' 1:14p'),
  699.    (mask:      0; cmdname: 'VER';      cmdext: 'COM'; size:    1936; date: '04-27-12'; time: '10:04p'),
  700.    (mask:      0; cmdname: 'HELP';     cmdext: 'COM'; size:   22349; date: '04-27-12'; time: '10:04p')
  701.    );
  702. const
  703.  roadtrans: array[0..13] of byte = (51,52,53,54,55,56,57,58,59,60,61,61,51,51);
  704.  walltrans: array[0..13] of byte = (104,105,106,107,108,109,110,111,112,113,114,114,104,104);
  705.  rivertrans: array[0..13] of byte = (62,63,64,65,66,67,68,69,70,71,72,72,62,62);
  706.  laketrans: array[0..21] of byte = (73,84,85,86,87,88,89,90,91,74,75,76,77,78,79,80,81,82,83,83,73,73);
  707.  lavatrans: array[0..13] of byte = (92,93,94,95,96,97,98,99,100,101,102,102,92,92);
  708.  
  709.  flagscannercloak=1;
  710.  
  711.  flagbaseholo=1;
  712.  
  713.  flaglrscan=1;
  714.  flagroaddata=2;
  715.  flagbigdata=4;
  716.  flaghasmapper=8;
  717.  flagtinyfort=16;
  718.  
  719.  flaguserdull=1;         {not using the fancy character sheet}
  720.  flagusersc=2;           {store colors disabled}
  721.  flagusernodel=4;        {set if user is on No-Deletion status}
  722.  flagusernodonate=8;     {set if user is on No-Donations status}
  723.  flagusernorank=16;      {set if user should not be ranked}
  724.  flaguserquick=32;       {set if user is using QUICK gterm}
  725.  flaguserrow=64;         {set if user uses row format inventory}
  726.  flagusertinyfort=128;   {use [B] symbol on map instead of fort map tile}
  727.  
  728.  flagweapacc1=1;
  729.  flagweapacc2=2;
  730.  flagweapacc3=1+2;
  731.  flagweapstun=4;
  732.  flagweapburst=8;
  733.  flagweapuni=16;
  734.  flagweapint1=32;
  735.  flagweapint2=64;
  736.  flagweapint3=64+32;
  737.  
  738.  flagarmorrecharge=1;
  739.  flagarmorstr1=2;
  740.  flagarmorstr2=4;
  741.  flagarmorstr3=2+4;
  742.  flagarmordex1=8;
  743.  flagarmordex2=16;
  744.  flagarmordex3=8+16;
  745.  flagarmoragl1=32;
  746.  flagarmoragl2=64;
  747.  flagarmoragl3=32+64;
  748.  
  749.  flagweapaccn=flagweapacc3;       {any accurized weapon}
  750.  flagweapintn=flagweapint3;       {any intensified weapon}
  751.  
  752.  flagmonisreal=1;                 {set if monster uses ISREAL}
  753.  flagmonwateronly=2;              {set for water only monsters}
  754.  flagmonlandwater=4;              {set for land/water monsters}
  755.  flagmonnorandom=8;               {disables random encounters}
  756.  
  757.  flagminesmart=1;                 {set if smart mine}
  758.  flagmineenergy=2;                {set if mine is energy drainer}
  759.  flagmineteleport=4;              {set if mine is a teleporter mine}
  760.  flagminerobo=8;                  {set if mine is a robomine}
  761.  flagminewarn=16;                 {set if mine has warning disabled}
  762.  
  763.  flagratiskelp=1;                 {set if ration is kelp ration - spq #14}
  764.  
  765.  flagbgentele1=4;                 {standard teleporter}
  766.  flagbgentele2=8;                 {excelsior teleport}
  767.  flagbgentele3=16;                {transporter}
  768.  flagbgencomm=32;                 {communications}
  769.  flagbgencloak=64;                {cloaking device}
  770.  flagbgenwander=128;              {wanderer}
  771.  flagbgenfactory=256;             {factory}
  772.  flagbgendrainer=512;             {ammo drainer}
  773.  
  774.  flagbgenprox0=1024;              {proximity detector (dist=0)}
  775.  flagbgenprox1=2048;              {proximity detector (dist=1)}
  776.  flagbgenprox2=1024+2048;         {proximity detector (dist=2)}
  777.  flagbgenprox3=4096;              {proximity detector (dist=3)}
  778.  flagbgenprox4=4096+1024;         {proximity detector (dist=4)}
  779.  flagbgenprox5=4096+2048;         {proximity detector (dist=5)}
  780.  flagbgenprox6=4096+2048+1024;    {proximity detector (dist=6)}
  781.  
  782.  flagbgentoll0=8192;              {toll station (dist=0)}
  783.  flagbgentoll1=16384;             {toll station (dist=1)}
  784.  flagbgentoll2=8192+16384;        {toll station (dist=2)}
  785.  flagbgentoll3=32768;             {toll station (dist=3)}
  786.  flagbgentoll4=32768+8192;        {toll station (dist=4)}
  787.  flagbgentoll5=32768+16384;       {toll station (dist=5)}
  788.  flagbgentoll6=32768+16384+8192;  {toll station (dist=6)}
  789.  
  790.  flagbgenspread0=65536;           {mine spreader (dist=0)}
  791.  flagbgenspread1=131072;          {mine spreader (dist=1)}
  792.  flagbgenspread2=131072+65536;    {mine spreader (dist=2)}
  793.  flagbgenspread3=262144;          {mine spreader (dist=3)}
  794.  flagbgenspread4=262144+65536;    {mine spreader (dist=4)}
  795.  flagbgenspread5=262144+131072;   {mine spreader (dist=5)}
  796.  flagbgenspread6=262144+131072+
  797.                           65536;  {mine spreader (dist=6)}
  798.  
  799.  flagbgenreactor=65536*8;         {reactor}
  800.  
  801.  flagbgenscav0=65536*16;          {scavenger radius 0}
  802.  flagbgenscav1=65536*32;          {scavenger radius 1}
  803.  flagbgenscav2=65536*16+65536*32; {scavenger radius 2}
  804.  flagbgenscav3=65536*64;          {scavenger radius 3}
  805.  flagbgenscav4=65536*64+65536*16; {scavenger radius 4}
  806.  flagbgenscav5=65536*64+65536*32; {scavenger radius 5}
  807.  flagbgenscav6=65536*64+65536*32+
  808.                         65536*16; {scavenger radius 6}
  809.  
  810.  flagbgenscan=65536*128;          {scanner}
  811.  
  812.  flagbgendevlock=65536*256;       {device lock}
  813.  flagbgenantisd=65536*512;        {anti self destruct}
  814.  
  815.  flagbgensell1=65536*1024;        {autosellers}
  816.  flagbgensell2=65536*2048;
  817.  flagbgensell3=65536*4096;
  818.  flagbgensell4=65536*8192;
  819.  
  820.  flagbgensmartscav=65536*16384;   {says scavenger droid is smart}
  821.  
  822.  flagbgenproxn=flagbgenprox6;     {any prox detector}
  823.  
  824.  flagbgentolln=flagbgentoll6;     {any toll station}
  825.  
  826.  flagbgenspreadn=flagbgenspread6; {any spreader}
  827.  
  828.  flagbgenscavn=flagbgenscav6;     {any scavenger}
  829.  
  830.  numgtermdev=numudev+6;
  831. type
  832.  gmaptype=array[1..9,1..9] of byte;
  833.  datype= array[1..numgtermdev] of byte;
  834.  devnametype = array[1..numgtermdev] of string[18];
  835.  miscdatatype= record
  836.                 datavalid: boolean;
  837.                 datainvalid: boolean;
  838.                 lodversion: string[5];
  839.                 username: string[35];
  840.                 useralias: string[35];
  841.                 sysopname: string[35];
  842.                 bbsname: string[35];
  843.                 regname: string[35];
  844.                 reg: boolean;
  845.                 hitmax: word;
  846.                 str,dex,agl: word;
  847.                 level: byte;
  848.                 ureg: boolean;
  849.  
  850.                 datasetname: string[45];    { from dataset }
  851.                 datasetauthor: string[45];
  852.  
  853.                 lev2exp: longint;           { from general }
  854.                 expmul: byte;
  855.                 levlim: byte;
  856.                 levpts: byte;
  857.  
  858.                 blah: array[1..32] of byte;
  859.                end;
  860.  
  861.  gamedatatype= record
  862.                 map: gmaptype;
  863.                 z,x,y: byte;
  864.                 dist: byte;
  865.                 danger: byte;
  866.                 hitpts: word;
  867.                 exper: longint;
  868.                 money: longint;
  869.                 hunger: byte;
  870.                 devpichi: datype;
  871.                 devpiclo: datype;
  872.                 devusehi: datype;
  873.                 devuselo: datype;
  874.                 devname: devnametype;
  875.                 flags: byte;
  876.                 sfgmode: byte;
  877.                 timeleft: byte;
  878.                 mapflag: gmaptype;
  879.                 tername: string[12];
  880.                 bigpicname: string[8];
  881.                 h,m,s,s100: word;
  882.                 quests: longint;
  883.                 bank: longint;
  884.                 casacct: longint;
  885.                 loan: longint;
  886.                 blah2: array[1..32] of byte;
  887.                end;
  888.  
  889.  nomapdatatype= record
  890.                 hitpts: word;
  891.                 exper: longint;
  892.                 money: longint;
  893.                 hunger: byte;
  894.                 devpichi: datype;
  895.                 devpiclo: datype;
  896.                 devusehi: datype;
  897.                 devuselo: datype;
  898.                 devname: devnametype;
  899.                 flags: byte;
  900.                 sfgmode: byte;
  901.                 timeleft: byte;
  902.                 bigpicname: string[8];
  903.                 h,m,s,s100: word;
  904.                 quests: longint;
  905.                 bank: longint;
  906.                 casacct: longint;
  907.                 loan: longint;
  908.                 blah: array[1..32] of byte;
  909.                end;
  910.  
  911.  combatdatatype= record
  912.                   monsterpic: bigpicident;
  913.                   playerpic: bigpicident;
  914.                   monsterhit: word;
  915.                   playerhit: word;
  916.                   monsterhp: word;
  917.                   playerhp: word;
  918.                   devpichi: datype;
  919.                   devpiclo: datype;
  920.                   devusehi: datype;
  921.                   devuselo: datype;
  922.                   devname: devnametype;
  923.                   blah: array[1..32] of byte;
  924.                  end;
  925.  
  926.  combatdatabigtype= record
  927.                   monsterpic: bigpicident;
  928.                   playerpic: bigpicident;
  929.                   monsterhit: word;
  930.                   playerhit: word;
  931.                   monsterhp: word;
  932.                   playerhp: word;
  933.                   monsterhpmax: word;
  934.                   playerhpmax: word;
  935.                   hitf8: boolean;
  936.                   unhitf8: boolean;
  937.                   blah: array[1..32] of byte;
  938.                  end;
  939.  
  940.  ansidatatype= record
  941.                 chk: word;
  942.                 name: string[8];
  943.                 blah: array[1..32] of byte;
  944.                end;
  945.  
  946.  rankrec=record
  947.           name: string[14];
  948.           flags: byte;
  949.           percents: array[1..8] of byte;
  950.           blah: array[1..10] of byte;
  951.          end;
  952.  
  953.  rankdatatype=record
  954.                numrank: byte;
  955.                theuser: rankrec;
  956.                theavg: rankrec;
  957.                rankings: array[1..12] of rankrec;
  958.               end;
  959.  
  960.  roadsmaptype=array[1.. ((maxmapx div 4)+1),1..maxmapy] of byte;
  961.  roadsmapptr=^roadsmaptype;
  962. type
  963.  matrixtype=array[1..3,1..3] of byte;
  964. const
  965.  try_ega: boolean = false;
  966.  roadsgood: boolean = false;
  967.  roadsneeded: boolean = false;
  968.  mapsize=sizeof(maptype);
  969.  authfile3: string[5] = 'I.LOD';
  970.  trivmax=200;
  971.  numpk=20;
  972.  
  973.  matrixtest: array[1..13] of matrixtype = (
  974.               ((2,1,2),
  975.                (1,1,1),
  976.                (2,1,2)),
  977.  
  978.               ((2,0,2),
  979.                (1,1,1),
  980.                (2,1,2)),
  981.  
  982.               ((2,1,2),
  983.                (1,1,0),
  984.                (2,1,2)),
  985.  
  986.               ((2,1,2),
  987.                (1,1,1),
  988.                (2,0,2)),
  989.  
  990.               ((2,1,2),
  991.                (0,1,1),
  992.                (2,1,2)),
  993.  
  994.               ((2,0,2),
  995.                (0,1,1),
  996.                (2,1,2)),
  997.  
  998.               ((2,0,2),
  999.                (1,1,0),
  1000.                (2,1,2)),
  1001.  
  1002.               ((2,1,2),
  1003.                (0,1,1),
  1004.                (2,0,2)),
  1005.  
  1006.               ((2,1,2),
  1007.                (1,1,0),
  1008.                (2,0,2)),
  1009.  
  1010.               ((2,0,2),
  1011.                (1,1,2),
  1012.                (2,0,2)),
  1013.  
  1014.               ((2,0,2),
  1015.                (2,1,1),
  1016.                (2,0,2)),
  1017.  
  1018.               ((2,2,2),
  1019.                (0,1,0),
  1020.                (2,1,2)),
  1021.  
  1022.               ((2,1,2),
  1023.                (0,1,0),
  1024.                (2,2,2))
  1025.  
  1026.                );
  1027.  
  1028.  matrixtest2: array[1..21] of matrixtype = (
  1029.               ((1,1,1),
  1030.                (1,1,1),
  1031.                (1,1,0)),
  1032.  
  1033.               ((1,1,1),
  1034.                (1,1,1),
  1035.                (0,1,1)),
  1036.  
  1037.               ((1,1,0),
  1038.                (1,1,1),
  1039.                (1,1,1)),
  1040.  
  1041.               ((0,1,1),
  1042.                (1,1,1),
  1043.                (1,1,1)),
  1044.  
  1045.               ((1,1,1),
  1046.                (1,1,1),
  1047.                (0,1,0)),
  1048.  
  1049.               ((0,1,1),
  1050.                (1,1,1),
  1051.                (0,1,1)),
  1052.  
  1053.               ((0,1,0),
  1054.                (1,1,1),
  1055.                (1,1,1)),
  1056.  
  1057.               ((1,1,0),
  1058.                (1,1,1),
  1059.                (1,1,0)),
  1060.  
  1061.               ((2,1,2),
  1062.                (1,1,1),
  1063.                (2,1,2)),
  1064.  
  1065.               ((2,0,2),
  1066.                (1,1,1),
  1067.                (2,1,2)),
  1068.  
  1069.               ((2,1,2),
  1070.                (1,1,0),
  1071.                (2,1,2)),
  1072.  
  1073.               ((2,1,2),
  1074.                (1,1,1),
  1075.                (2,0,2)),
  1076.  
  1077.               ((2,1,2),
  1078.                (0,1,1),
  1079.                (2,1,2)),
  1080.  
  1081.               ((2,0,2),
  1082.                (0,1,1),
  1083.                (2,1,2)),
  1084.  
  1085.               ((2,0,2),
  1086.                (1,1,0),
  1087.                (2,1,2)),
  1088.  
  1089.               ((2,1,2),
  1090.                (0,1,1),
  1091.                (2,0,2)),
  1092.  
  1093.               ((2,1,2),
  1094.                (1,1,0),
  1095.                (2,0,2)),
  1096.  
  1097.               ((2,0,2),
  1098.                (1,1,2),
  1099.                (2,0,2)),
  1100.  
  1101.               ((2,0,2),
  1102.                (2,1,1),
  1103.                (2,0,2)),
  1104.  
  1105.               ((2,2,2),
  1106.                (0,1,0),
  1107.                (2,1,2)),
  1108.  
  1109.               ((2,1,2),
  1110.                (0,1,0),
  1111.                (2,2,2))
  1112.  
  1113.                );
  1114.  
  1115.  authfile2: string[5] = 'ENT';
  1116. var
  1117.  nomap: nomapdatatype;
  1118.  combatdata: combatdatatype;
  1119.  combatdatabig: combatdatabigtype;
  1120.  lastgamedata,gamedata: gamedatatype;
  1121.  lastmiscdata,miscdata: miscdatatype;
  1122.  rankdata: rankdatatype;
  1123.  roadsmap: EAPointer;
  1124. type
  1125.  idrec=record
  1126.         poslo: word;
  1127.         poshi: byte;
  1128.        end;
  1129.  idarray=array[0..1] of idrec;
  1130.  idarrayptr = ^idarray;
  1131.  pstring = ^string;
  1132. var
  1133.  {GAME DEF STUFF}
  1134.  gamedef: text;
  1135.  gamebin: file;
  1136.  talkstart: word;
  1137.  trellstart, trellend: word;
  1138.  wpsmstart, wpsmend: word;
  1139.  spwstart, spwend: word;
  1140.  troystart, troyend: word;
  1141.  histstart, histend: word;
  1142.  laphelpstart, laphelpend: word;
  1143.  commstart, commend: word;
  1144.  pfstart,pfend: array[1..numpurparts] of word;
  1145.  afstart,afend: array[1..numpurparts] of word;
  1146.  dataset: datasettype;
  1147.  
  1148.  {USED FOR STRDEF REPLACE}
  1149.  
  1150.  strdef_numreplace: word;
  1151.  strdef_replace1: array[1..strdef_maxreplace] of pstring;
  1152.  strdef_replace2: array[1..strdef_maxreplace] of pstring;
  1153.  
  1154.  {OTHER STUFF}
  1155.  
  1156.  gterm_lastlr: gmaptype;
  1157.  gterm_lastlrz,gterm_lastlrx,gterm_lastlry: byte;
  1158.  gterm_needlrupdate: boolean;
  1159.  gterm_lrpresent: boolean;
  1160.  gterm_invscroll: word;
  1161.  gterm_comport: word;
  1162.  gterm_baud_rate: word;
  1163.  gterm_lodusername: string[40];
  1164.  gterm_local: boolean;
  1165.  sysopdata: sysoptype;
  1166.  telecodes: telearray;
  1167.  autonavx,autonavy,autonavz: byte;
  1168.  general: generaltype;
  1169.  terrain: terrainarray;
  1170.  devicedef: devdefarray;
  1171.  nummondef: word;
  1172.  mondef: array[1..maxmon] of EAPointer;
  1173.  filesopen: boolean;
  1174.  exitsave: pointer;
  1175.  usernum: byte;
  1176.  user: usertype;
  1177.  userfile: file of usertype;
  1178.  useridx: useridxarray;
  1179.  imap: array[1..numdev] of word;
  1180.  numitems: byte;
  1181.  zmap: mapptr;
  1182.  clonefile: file of clonetype;
  1183.  objects: objarray;
  1184.  numolist: word;
  1185.  pchar,mchar,dchar: combatptr;
  1186.  needredraw: boolean;
  1187.  realansi: boolean;
  1188.  bases: baseptr;
  1189.  medcount: word;
  1190.  gtermon: boolean;
  1191.  lastmove: boolean;
  1192.  strdefbytes: word;
  1193.  dietcount: word;
  1194.  numgroups: word;
  1195.  groups: cstrarray;
  1196.  tavern: tavernarray;
  1197.  numtav: word;
  1198.  tryems: boolean;
  1199.  numstrdef: word;
  1200.  checkmulti: boolean;
  1201.  lokexitsave: pointer;
  1202.  automaint: boolean;
  1203.  usemod: boolean;
  1204.  moddev: integer;
  1205.  modqual: byte;
  1206.  forceremoteaudio: boolean;
  1207.  memstart: longint;
  1208.  purmask: array[0..numterrain] of byte;
  1209.  havepurmask: boolean;
  1210.  enhon: boolean;
  1211.  npcfortstart: word;
  1212.  
  1213.  pkup: array[1..numpk] of word;
  1214.  pksend: array[1..numpk] of word;
  1215.  pkbyte: array[1..numpk] of longint;
  1216.  
  1217.  puritron: puritrontype;
  1218.  mdata: ^mdatatype;
  1219.  teams: EAPointer;
  1220.  
  1221.  timeusedstart: word;
  1222.  
  1223.  trivquest: array[1..trivmax] of byte;
  1224.  
  1225.  devfill,devgood,devnil: word;
  1226.  
  1227.  strdefid: pointer;
  1228.  didpause: boolean;
  1229.  
  1230.  genobj: genobjarray;
  1231.  numgenobj: word;
  1232.  
  1233.  quests: questarray;
  1234.  
  1235.  strdef_numindex,strdef_idxstart,strdef_idxsize,strdef_strstart: longint;
  1236.  
  1237. implementation
  1238.  
  1239. end.
  1240.