hedgewars/uVariables.pas
branchexperimental3D
changeset 4812 f924be23ffb4
parent 4808 7c3e5b52344a
child 4814 e19791f08443
equal deleted inserted replaced
4347:0ddb100fea61 4812:f924be23ffb4
       
     1 {$INCLUDE options.inc}
       
     2 
       
     3 unit uVariables;
       
     4 interface
       
     5 
       
     6 uses SDLh, uTypes, uFloat, GLunit, uConsts, Math, uMobile;
       
     7 
       
     8 var
       
     9 /////// init flags ///////
       
    10     cScreenWidth    : LongInt     = 1024;
       
    11     cScreenHeight   : LongInt     = 768;
       
    12     cBits           : LongInt     = 32;
       
    13     //ipcPort is in uIO
       
    14     cFullScreen     : boolean     = false;
       
    15     isSoundEnabled  : boolean     = true;
       
    16     isMusicEnabled  : boolean     = false;
       
    17     cLocaleFName    : shortstring = 'en.txt';
       
    18     cInitVolume     : LongInt     = 100;
       
    19     cTimerInterval  : LongInt     = 8;
       
    20     PathPrefix      : shortstring = './';
       
    21     cShowFPS        : boolean     = false;
       
    22     cAltDamage      : boolean     = true;
       
    23     cReducedQuality : LongWord    = rqNone;
       
    24     //userNick is in uChat
       
    25     recordFileName  : shortstring = '';
       
    26     cReadyDelay     : Longword    = 5000;
       
    27     cLogfileBase    : shortstring = 'debug';
       
    28     cStereoMode     : TStereoMode = smNone;
       
    29 //////////////////////////
       
    30 
       
    31     alsoShutdownFrontend: boolean = false;
       
    32 
       
    33     isCursorVisible : boolean;
       
    34     isTerminated    : boolean;
       
    35     isInLag         : boolean;
       
    36     isPaused        : boolean;
       
    37 
       
    38     isSEBackup      : boolean;
       
    39     isInMultiShoot  : boolean;
       
    40     isSpeed         : boolean;
       
    41     isFirstFrame    : boolean;
       
    42 
       
    43     fastUntilLag    : boolean;
       
    44 
       
    45     GameState       : TGameState;
       
    46     GameType        : TGameType;
       
    47     InputMask       : LongWord;
       
    48     GameFlags       : Longword;
       
    49     TurnTimeLeft    : Longword;
       
    50     ReadyTimeLeft   : Longword;
       
    51     cSuddenDTurns   : LongInt;
       
    52     cDamagePercent  : LongInt;
       
    53     cMineDudPercent : LongWord;
       
    54     cTemplateFilter : LongInt;
       
    55     cMapGen         : LongInt;
       
    56     cMazeSize       : LongInt;
       
    57     cRopePercent    : LongWord;
       
    58 
       
    59     cHedgehogTurnTime: Longword;
       
    60     cMinesTime       : LongInt;
       
    61     cMaxAIThinkTime  : Longword;
       
    62 
       
    63     cHealthCaseProb  : LongInt;
       
    64     cHealthCaseAmount: LongInt;
       
    65     cWaterRise       : LongInt;
       
    66     cHealthDecrease  : LongInt;
       
    67 
       
    68     cCloudsNumber    : LongInt;
       
    69     cSDCloudsNumber  : LongInt;
       
    70 
       
    71     cTagsMask        : byte;
       
    72     zoom             : GLfloat;
       
    73     ZoomValue        : GLfloat;
       
    74 
       
    75     cWaterLine       : LongInt;
       
    76     cGearScrEdgesDist: LongInt;
       
    77 
       
    78     GameTicks   : LongWord;
       
    79 
       
    80     // originally from uConsts
       
    81     Pathz: array[TPathType] of shortstring;
       
    82     CountTexz: array[1..Pred(AMMO_INFINITE)] of PTexture;
       
    83     LAND_WIDTH       : LongInt;
       
    84     LAND_HEIGHT      : LongInt;
       
    85     LAND_WIDTH_MASK  : LongWord;
       
    86     LAND_HEIGHT_MASK : LongWord;
       
    87     cMaxCaptions     : LongInt;
       
    88 
       
    89     cLeftScreenBorder     : LongInt;
       
    90     cRightScreenBorder    : LongInt;
       
    91     cScreenSpace          : LongInt;
       
    92 
       
    93     cCaseFactor     : Longword;
       
    94     cLandMines      : Longword;
       
    95     cExplosives     : Longword;
       
    96 
       
    97     cSeed           : shortstring;
       
    98     cVolumeDelta    : LongInt;
       
    99     cHasFocus       : boolean;
       
   100     cInactDelay     : Longword;
       
   101 
       
   102     bBetweenTurns   : boolean;
       
   103     bWaterRising    : boolean;
       
   104 
       
   105     ShowCrosshair   : boolean;
       
   106     CursorMovementX : LongInt;
       
   107     CursorMovementY : LongInt;
       
   108     cDrownSpeed     : hwFloat;
       
   109     cDrownSpeedf    : real;
       
   110     cMaxWindSpeed   : hwFloat;
       
   111     cWindSpeed      : hwFloat;
       
   112     cWindSpeedf     : real;
       
   113     cGravity        : hwFloat;
       
   114     cGravityf       : real;
       
   115     cDamageModifier : hwFloat;
       
   116     cLaserSighting  : boolean;
       
   117     cVampiric       : boolean;
       
   118     cArtillery      : boolean;
       
   119     WeaponTooltipTex : PTexture;
       
   120 
       
   121     flagMakeCapture : boolean;
       
   122 
       
   123     InitStepsFlags  : Longword;
       
   124     RealTicks       : Longword;
       
   125     AttackBar       : LongInt;
       
   126 
       
   127     WaterColorArray : array[0..3] of HwColor4f;
       
   128     SDWaterColorArray : array[0..3] of HwColor4f;
       
   129     SDMusic         : shortstring;
       
   130 
       
   131     CursorPoint     : TPoint;
       
   132     TargetPoint     : TPoint;
       
   133 
       
   134     ScreenFade      : TScreenFade;
       
   135     ScreenFadeValue : LongInt;
       
   136     ScreenFadeSpeed : LongInt;
       
   137 
       
   138     Theme           : shortstring;
       
   139     disableLandBack : boolean;
       
   140 
       
   141 {$IFDEF SDL13}
       
   142     SDLwindow       : PSDL_Window;
       
   143 {$ENDIF}
       
   144 
       
   145     WorldDx: LongInt;
       
   146     WorldDy: LongInt;
       
   147 
       
   148 const
       
   149     cHHFileName = 'Hedgehog';
       
   150     cCHFileName = 'Crosshair';
       
   151     cThemeCFGFilename = 'theme.cfg';
       
   152 
       
   153     FontBorder = 2;
       
   154     cPathz: array[TPathType] of shortstring = (
       
   155         '',                              // ptNone
       
   156         '',                              // ptData
       
   157         'Graphics',                      // ptGraphics
       
   158         'Themes',                        // ptThemes
       
   159         'Themes/avematan',               // ptCurrTheme
       
   160         'Teams',                         // ptTeams
       
   161         'Maps',                          // ptMaps
       
   162         '',                              // ptMapCurrent
       
   163         'Demos',                         // ptDemos
       
   164         'Sounds',                        // ptSounds
       
   165         'Graphics/Graves',               // ptGraves
       
   166         'Fonts',                         // ptFonts
       
   167         'Forts',                         // ptForts
       
   168         'Locale',                        // ptLocale
       
   169         'Graphics/AmmoMenu',             // ptAmmoMenu
       
   170         'Graphics/Hedgehog',             // ptHedgehog
       
   171         'Sounds/voices',                 // ptVoices
       
   172         'Graphics/Hats',                 // ptHats
       
   173         'Graphics/Flags',                // ptFlags
       
   174         'Missions/Maps',                 // ptMissionMaps
       
   175         'Graphics/SuddenDeath'           // ptSuddenDeath
       
   176     );
       
   177 
       
   178     cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
       
   179     cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0);
       
   180 
       
   181     Fontz: array[THWFont] of THHFont = (
       
   182             (Handle: nil;
       
   183             Height: 12;
       
   184             style: TTF_STYLE_NORMAL;
       
   185             Name: 'DejaVuSans-Bold.ttf'),
       
   186             (Handle: nil;
       
   187             Height: 24;
       
   188             style: TTF_STYLE_NORMAL;
       
   189             Name: 'DejaVuSans-Bold.ttf'),
       
   190             (Handle: nil;
       
   191             Height: 10;
       
   192             style: TTF_STYLE_NORMAL;
       
   193             Name: 'DejaVuSans-Bold.ttf')
       
   194             {$IFNDEF IPHONEOS}, // remove chinese fonts for now
       
   195             (Handle: nil;
       
   196             Height: 12;
       
   197             style: TTF_STYLE_NORMAL;
       
   198             Name: 'wqy-zenhei.ttc'),
       
   199             (Handle: nil;
       
   200             Height: 24;
       
   201             style: TTF_STYLE_NORMAL;
       
   202             Name: 'wqy-zenhei.ttc'),
       
   203             (Handle: nil;
       
   204             Height: 10;
       
   205             style: TTF_STYLE_NORMAL;
       
   206             Name: 'wqy-zenhei.ttc')
       
   207             {$ENDIF}
       
   208             );
       
   209 
       
   210     SpritesData: array[TSprite] of record
       
   211             FileName: String[16];
       
   212             Path, AltPath: TPathType;
       
   213             Texture: PTexture;
       
   214             Surface: PSDL_Surface;
       
   215             Width, Height, imageWidth, imageHeight: LongInt;
       
   216             saveSurf: boolean;
       
   217             priority: GLfloat;
       
   218             getDimensions, getImageDimensions: boolean;
       
   219             end = (
       
   220             (FileName:  'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   221             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprWater
       
   222             (FileName:     'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   223             Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCloud
       
   224             (FileName:       'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   225             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBomb
       
   226             (FileName:  'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   227             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigDigit
       
   228             (FileName:      'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   229             Width:   4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFrame
       
   230             (FileName:        'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   231             Width:  65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLag
       
   232             (FileName:      'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   233             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCursor
       
   234             (FileName:'BazookaShell'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   235             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBazookaShell
       
   236             (FileName:    'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   237             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetP
       
   238             (FileName:        'Bee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   239             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBee
       
   240             (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   241             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeTrace
       
   242             (FileName:   'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   243             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprRopeHook
       
   244             (FileName:     'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   245             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosion50
       
   246             (FileName:    'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   247             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOff
       
   248             (FileName:     'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   249             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineOn
       
   250             (FileName:     'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   251             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMineDead
       
   252             (FileName:       'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   253             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprCase
       
   254             (FileName:   'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   255             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprFAid
       
   256             (FileName:   'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   257             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDynamite
       
   258             (FileName:      'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   259             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprPower
       
   260             (FileName:     'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   261             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterBomb
       
   262             (FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   263             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprClusterParticle
       
   264             (FileName:      'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   265             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlame
       
   266             (FileName:   'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   267             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont
       
   268             (FileName:  'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   269             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont
       
   270             (FileName:  'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   271             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprHorizont
       
   272             (FileName:        'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   273             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky
       
   274             (FileName:       'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   275             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky
       
   276             (FileName:       'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
       
   277             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: true; getImageDimensions: true),// sprSky
       
   278             (FileName:  'BorderHorizontal'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   279             Width: 33; Height:  2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderHorizontal
       
   280             (FileName:  'BorderVertical'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   281             Width: 2; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprAMBorderVertical
       
   282             (FileName:   'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   283             Width: 33; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlot
       
   284             (FileName:      'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   285             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMAmmos
       
   286             (FileName:   'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   287             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMSlotKeys
       
   288             (FileName:  'Corners'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   289             Width:  2; Height: 2; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAMCorners
       
   290             (FileName:     'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   291             Width:  32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprFinger
       
   292             (FileName:    'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   293             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirBomb
       
   294             (FileName:   'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   295             Width: 254; Height: 101; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAirplane
       
   296             (FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   297             Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmAirplane
       
   298             (FileName:   'amGirder'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   299             Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf:  true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmGirder
       
   300             (FileName:     'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   301             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf:  true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHHTelepMask
       
   302             (FileName:     'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   303             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSwitch
       
   304             (FileName:  'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   305             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprParachute
       
   306             (FileName:     'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   307             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTarget
       
   308             (FileName:   'RopeNode'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   309             Width:   6; Height:  6; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprRopeNode
       
   310             (FileName:   'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   311             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprQuestion
       
   312             (FileName:   'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   313             Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPowerBar
       
   314             (FileName:    'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   315             Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindBar
       
   316             (FileName:      'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   317             Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindL
       
   318             (FileName:      'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   319             Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWindR
       
   320             (FileName:      'Flake'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil;
       
   321             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFlake
       
   322             (FileName:     'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   323             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandRope
       
   324             (FileName:  'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   325             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBazooka
       
   326             (FileName:  'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   327             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandShotgun
       
   328             (FileName:   'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   329             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDEagle
       
   330             (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   331             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandAirAttack
       
   332             (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   333             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBaseball
       
   334             (FileName:     'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   335             Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPHammer
       
   336             (FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   337             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBlowTorch
       
   338             (FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   339             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBlowTorch
       
   340             (FileName:   'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   341             Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTeleport
       
   342             (FileName:    'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   343             Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHHDeath
       
   344             (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   345             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprShotgun
       
   346             (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   347             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDEagle
       
   348             (FileName:       'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   349             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHHIdle
       
   350             (FileName:     'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   351             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMortar
       
   352             (FileName:  'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   353             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTurnsLeft
       
   354             (FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   355             Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKamikaze
       
   356             (FileName:     'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   357             Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip
       
   358             (FileName:     'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   359             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprKowtow
       
   360             (FileName:        'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   361             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSad
       
   362             (FileName:       'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   363             Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprWave
       
   364             (FileName:     'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   365             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprHurrah
       
   366             (FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   367             Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprLemonade
       
   368             (FileName:      'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   369             Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShrug
       
   370             (FileName:     'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   371             Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprJuggle
       
   372             (FileName:   'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   373             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart
       
   374             (FileName:  'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   375             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplPart2
       
   376             (FileName:  'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   377             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeWalk
       
   378             (FileName:  'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   379             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCakeDown
       
   380             (FileName:   'Ammos_bw'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
       
   381             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprAMAmmosBW
       
   382             (FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   383             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWatermelon
       
   384             (FileName:  'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   385             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprEvilTrace
       
   386             (FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   387             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHellishBomb
       
   388             (FileName:  'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   389             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSeduction
       
   390             (FileName:    'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   391             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprDress
       
   392             (FileName:   'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   393             Width:  64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprCensored
       
   394             (FileName:      'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   395             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDrill
       
   396             (FileName:    'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   397             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDrill
       
   398             (FileName:  'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   399             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBallgun
       
   400             (FileName:      'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   401             Width:  32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBalls
       
   402             (FileName:    'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   403             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPlane
       
   404             (FileName:  'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   405             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandPlane
       
   406             (FileName:    'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   407             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprUtility
       
   408             (FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   409             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprInvulnerable
       
   410             (FileName:   'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   411             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprVampiric
       
   412             (FileName:   'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   413             Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprGirder
       
   414             (FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   415             Width:  12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechCorner
       
   416             (FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   417             Width:  25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechEdge
       
   418             (FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   419             Width:  25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprSpeechTail
       
   420             (FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   421             Width:  49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtCorner
       
   422             (FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   423             Width:  23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtEdge
       
   424             (FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   425             Width:  45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprThoughtTail
       
   426             (FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   427             Width:  34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutCorner
       
   428             (FileName:  'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   429             Width:  30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutEdge
       
   430             (FileName:  'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   431             Width:  30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprShoutTail
       
   432             (FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   433             Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSniperRifle
       
   434             (FileName:    'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   435             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprBubbles
       
   436             (FileName:  'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   437             Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprJetpack
       
   438             (FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   439             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprHealth
       
   440             (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   441             Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),//sprHandMolotov
       
   442             (FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   443             Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprMolotov
       
   444             (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   445             Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmoke
       
   446             (FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   447             Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSmokeWhite
       
   448             (FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   449             Width:  8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: true),// sprShell
       
   450             (FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   451             Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDust
       
   452             (FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   453             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosives
       
   454             (FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   455             Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprExplosivesRoll
       
   456             (FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   457             Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprAmTeleport
       
   458             (FileName: 'Splash'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   459             Width:  80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSplash
       
   460             (FileName: 'Droplet'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   461             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprDroplet
       
   462             (FileName: 'Birdy'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   463             Width:  75; Height: 75; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBirdy
       
   464             (FileName:  'amCake'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   465             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCake
       
   466             (FileName:  'amConstruction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   467             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandConstruction
       
   468             (FileName:  'amGrenade'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   469             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandGrenade
       
   470             (FileName:  'amMelon'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   471             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMelon
       
   472             (FileName:  'amMortar'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   473             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMortar
       
   474             (FileName:  'amSkip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   475             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSkip
       
   476             (FileName:  'amCluster'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   477             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCluster
       
   478             (FileName:  'amDynamite'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   479             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandDynamite
       
   480             (FileName:  'amHellish'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   481             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandHellish
       
   482             (FileName:  'amMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   483             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandMine
       
   484             (FileName:  'amSeduction'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   485             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSeduction
       
   486             (FileName:  'amVamp'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   487             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandVamp
       
   488             (FileName:  'BigExplosion'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   489             Width:  385; Height: 385; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprBigExplosion
       
   490             (FileName:  'SmokeRing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   491             Width:  200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSmokeRing
       
   492             (FileName:  'BeeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   493             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprBeeTrace
       
   494             (FileName:  'Egg'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   495             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprEgg
       
   496             (FileName:  'TargetBee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   497             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprTargetBee
       
   498             (FileName:  'amBee'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   499             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandBee
       
   500             (FileName:  'Feather'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   501             Width:  15; Height: 25; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprFeather
       
   502             (FileName:  'Piano'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   503             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPiano
       
   504             (FileName:  'amSineGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   505             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSineGun
       
   506             (FileName:  'amPortalGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   507             Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortalGun
       
   508             (FileName:  'Portal'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   509             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprPortal
       
   510             (FileName:  'cheese'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   511             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprCheese
       
   512             (FileName:  'amCheese'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   513             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandCheese
       
   514             (FileName:  'amFlamethrower'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   515             Width:  128; Height: 128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandFlamethrower
       
   516             (FileName:  'Chunk'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   517             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprChunk
       
   518             (FileName:  'Note'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   519             Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprNote
       
   520             (FileName:   'SMineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   521             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOff
       
   522             (FileName:    'SMineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
       
   523             Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSMineOn
       
   524             (FileName:   'amSMine'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   525             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSMine
       
   526             (FileName:  'amHammer'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
       
   527             Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprWhip
       
   528             (FileName: 'amResurrector'; Path: ptHedgehog; AltPath: ptNone;
       
   529                 Texture: nil; Surface: nil; Width: 32; Height: 32;
       
   530                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   531                 tpMedium; getDimensions: false; getImageDimensions: true),
       
   532             //sprHandResurrector
       
   533             (FileName: 'Cross'; Path: ptGraphics; altPath: ptNone;
       
   534                 Texture: nil; Surface: nil; Width: 108; Height: 138;
       
   535                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   536                 tpMedium; getDimensions: false; getImageDimensions: true),
       
   537             //sprCross
       
   538             (FileName:  'AirDrill'; Path: ptGraphics; AltPath: ptNone;
       
   539                 Texture: nil; Surface: nil; Width:  16; Height: 16;
       
   540                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   541                 tpMedium; getDimensions: false; getImageDimensions: true),
       
   542             // sprAirDrill
       
   543             (FileName:  'NapalmBomb'; Path: ptGraphics; AltPath: ptNone;
       
   544                 Texture: nil; Surface: nil; Width:  16; Height: 16;
       
   545                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   546                 tpMedium; getDimensions: false; getImageDimensions: true),
       
   547             // sprNapalmBomb
       
   548             (FileName:  'BulletHit'; Path: ptGraphics; AltPath: ptNone;
       
   549                 Texture: nil; Surface: nil; Width:  32; Height: 32;
       
   550                 imageWidth: 0; imageHeight: 0; saveSurf: false; priority:
       
   551                 tpMedium; getDimensions: false; getImageDimensions: true),
       
   552             // sprNapalmBomb
       
   553             (FileName:  'Snowball'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   554             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnowball
       
   555             (FileName:  'amSnowball'; Path: ptCurrTheme; AltPath: ptHedgehog; Texture: nil; Surface: nil;
       
   556             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSnowball
       
   557             (FileName:  'Snow'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
       
   558             Width:  4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow
       
   559             (FileName:    'SDFlake'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
       
   560             Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlake
       
   561             (FileName:    'SDWater'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
       
   562             Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprSDWater
       
   563             (FileName:   'SDClouds'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
       
   564             Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloud
       
   565             (FileName:   'SDSplash'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
       
   566             Width:  80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSDSplash
       
   567             (FileName:  'SDDroplet'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
       
   568             Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true)// sprSDDroplet
       
   569             );
       
   570 
       
   571 
       
   572     Wavez: array [TWave] of record
       
   573             Sprite: TSprite;
       
   574             FramesCount: Longword;
       
   575             Interval: Longword;
       
   576             cmd: String[20];
       
   577             Voice: TSound;
       
   578             VoiceDelay: LongWord;
       
   579             end = (
       
   580             (Sprite:   sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0),
       
   581             (Sprite:      sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0),
       
   582             (Sprite:     sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5),
       
   583             (Sprite:   sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0),
       
   584             (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0),
       
   585             (Sprite:    sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0),
       
   586             (Sprite:   sprJuggle; FramesCount: 49; Interval:  38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0)
       
   587             );
       
   588 
       
   589     Soundz: array[TSound] of record
       
   590             FileName: String[25];
       
   591             Path    : TPathType;
       
   592             end = (
       
   593             (FileName:                         ''; Path: ptNone  ),// sndNone
       
   594             (FileName:        'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact
       
   595             (FileName:            'explosion.ogg'; Path: ptSounds),// sndExplosion
       
   596             (FileName:         'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp
       
   597             (FileName:         'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease
       
   598             (FileName:               'splash.ogg'; Path: ptSounds),// sndSplash
       
   599             (FileName:        'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload
       
   600             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire
       
   601             (FileName:          'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact
       
   602             (FileName:             'minetick.ogg'; Path: ptSounds),// sndMineTicks
       
   603             (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndPickhammer
       
   604             (FileName:                  'gun.ogg'; Path: ptSounds),// sndGun
       
   605             (FileName:                  'bee.ogg'; Path: ptSounds),// sndBee
       
   606             (FileName:                'Jump1.ogg'; Path: ptVoices),// sndJump1
       
   607             (FileName:                'Jump2.ogg'; Path: ptVoices),// sndJump2
       
   608             (FileName:                'Jump3.ogg'; Path: ptVoices),// sndJump3
       
   609             (FileName:               'Yessir.ogg'; Path: ptVoices),// sndYesSir
       
   610             (FileName:                'Laugh.ogg'; Path: ptVoices),// sndLaugh
       
   611             (FileName:            'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou
       
   612             (FileName:             'Incoming.ogg'; Path: ptVoices),// sndIncoming
       
   613             (FileName:               'Missed.ogg'; Path: ptVoices),// sndMissed
       
   614             (FileName:               'Stupid.ogg'; Path: ptVoices),// sndStupid
       
   615             (FileName:           'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood
       
   616             (FileName:               'Boring.ogg'; Path: ptVoices),// sndBoring
       
   617             (FileName:               'Byebye.ogg'; Path: ptVoices),// sndByeBye
       
   618             (FileName:             'Sameteam.ogg'; Path: ptVoices),// sndSameTeam
       
   619             (FileName:               'Nutter.ogg'; Path: ptVoices),// sndNutter
       
   620             (FileName:       'Reinforcements.ogg'; Path: ptVoices),// sndReinforce
       
   621             (FileName:              'Traitor.ogg'; Path: ptVoices),// sndTraitor
       
   622             (FileName:      'Youllregretthat.ogg'; Path: ptVoices),// sndRegret
       
   623             (FileName:            'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown
       
   624             (FileName:               'Coward.ogg'; Path: ptVoices),// sndCoward
       
   625             (FileName:                'Hurry.ogg'; Path: ptVoices),// sndHurry
       
   626             (FileName:              'Watchit.ogg'; Path: ptVoices),// sndWatchIt
       
   627             (FileName:             'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze
       
   628             (FileName:                'cake2.ogg'; Path: ptSounds),// sndCake
       
   629             (FileName:                  'Ow1.ogg'; Path: ptVoices),// sndOw1
       
   630             (FileName:                  'Ow2.ogg'; Path: ptVoices),// sndOw2
       
   631             (FileName:                  'Ow3.ogg'; Path: ptVoices),// sndOw3
       
   632             (FileName:                  'Ow4.ogg'; Path: ptVoices),// sndOw4
       
   633             (FileName:           'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1
       
   634             (FileName:           'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2
       
   635             (FileName:           'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3
       
   636             (FileName:           'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4
       
   637             (FileName:           'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5
       
   638             (FileName:           'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6
       
   639             (FileName:                'Melon.ogg'; Path: ptVoices),// sndMelon
       
   640             (FileName:              'Hellish.ogg'; Path: ptSounds),// sndHellish
       
   641             (FileName:               'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo
       
   642             (FileName:              'rcplane.ogg'; Path: ptSounds),// sndRCPlane
       
   643             (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack
       
   644             (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries
       
   645             (FileName:               'denied.ogg'; Path: ptSounds),// sndDenied
       
   646             (FileName:               'placed.ogg'; Path: ptSounds),// sndPlaced
       
   647             (FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
       
   648             (FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
       
   649             (FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
       
   650             (FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
       
   651             (FileName:               'mortar.ogg'; Path: ptSounds),// sndMortar
       
   652             (FileName:         'shutterclick.ogg'; Path: ptSounds),// sndShutter
       
   653             (FileName:              'homerun.ogg'; Path: ptSounds),// sndHomerun
       
   654             (FileName:              'molotov.ogg'; Path: ptSounds),// sndMolotov
       
   655             (FileName:            'Takecover.ogg'; Path: ptVoices),// sndCover
       
   656             (FileName:                'Uh-oh.ogg'; Path: ptVoices),// sndUhOh
       
   657             (FileName:                 'Oops.ogg'; Path: ptVoices),// sndOops
       
   658             (FileName:                 'Nooo.ogg'; Path: ptVoices),// sndNooo
       
   659             (FileName:                'Hello.ogg'; Path: ptVoices),// sndHello
       
   660             (FileName:             'ropeshot.ogg'; Path: ptSounds),// sndRopeShot
       
   661             (FileName:           'ropeattach.ogg'; Path: ptSounds),// sndRopeAttach
       
   662             (FileName:          'roperelease.ogg'; Path: ptSounds),// sndRopeRelease
       
   663             (FileName:            'switchhog.ogg'; Path: ptSounds),// sndSwitchHog
       
   664             (FileName:              'victory.ogg'; Path: ptVoices),// sndVictory
       
   665             (FileName:         'sniperreload.ogg'; Path: ptSounds),// sndSniperReload
       
   666             (FileName:                'steps.ogg'; Path: ptSounds),// sndSteps
       
   667             (FileName:           'lowgravity.ogg'; Path: ptSounds),// sndLowGravity
       
   668             (FileName:           'hell_growl.ogg'; Path: ptSounds),// sndHellishImpact1
       
   669             (FileName:            'hell_ooff.ogg'; Path: ptSounds),// sndHellishImpact2
       
   670             (FileName:              'hell_ow.ogg'; Path: ptSounds),// sndHellishImpact3
       
   671             (FileName:             'hell_ugh.ogg'; Path: ptSounds),// sndHellishImpact4
       
   672             (FileName:          'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact
       
   673             (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndDroplet1
       
   674             (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
       
   675             (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
       
   676             (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
       
   677             (FileName:             'drillgun.ogg'; Path: ptSounds),// sndDrillRocket
       
   678             (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
       
   679             (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
       
   680             (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
       
   681             (FileName:              'Whistle.ogg'; Path: ptSounds),// sndWhistle
       
   682             (FileName:             'beewater.ogg'; Path: ptSounds),// sndBeeWater
       
   683             (FileName:                   '1C.ogg'; Path: ptSounds),// sndPiano0
       
   684             (FileName:                   '2D.ogg'; Path: ptSounds),// sndPiano1
       
   685             (FileName:                   '3E.ogg'; Path: ptSounds),// sndPiano2
       
   686             (FileName:                   '4F.ogg'; Path: ptSounds),// sndPiano3
       
   687             (FileName:                   '5G.ogg'; Path: ptSounds),// sndPiano4
       
   688             (FileName:                   '6A.ogg'; Path: ptSounds),// sndPiano5
       
   689             (FileName:                   '7B.ogg'; Path: ptSounds),// sndPiano6
       
   690             (FileName:                   '8C.ogg'; Path: ptSounds),// sndPiano7
       
   691             (FileName:                   '9D.ogg'; Path: ptSounds),// sndPiano8
       
   692             (FileName:                 'skip.ogg'; Path: ptSounds),// sndSkip
       
   693             (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndSineGun
       
   694             (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
       
   695             (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
       
   696             (FileName:                'Ooff3.ogg'; Path: ptVoices),// sndOoff3
       
   697             (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhack
       
   698             (FileName:           'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen
       
   699             (FileName:            'parachute.ogg'; Path: ptSounds),// sndParachute
       
   700             (FileName:                 'bump.ogg'; Path: ptSounds),// sndBump
       
   701             (FileName: 'hogchant3.ogg'; Path: ptSounds) // sndResurrector
       
   702             );
       
   703 
       
   704     Ammoz: array [TAmmoType] of record
       
   705             NameId: TAmmoStrId;
       
   706             NameTex: PTexture;
       
   707             Probability, NumberInCase: Longword;
       
   708             Ammo: TAmmo;
       
   709             Slot: 0..cMaxSlotIndex;
       
   710             TimeAfterTurn: Longword;
       
   711             minAngle, maxAngle: Longword;
       
   712             isDamaging: boolean;
       
   713             SkipTurns: Longword;
       
   714             PosCount: Longword;
       
   715             PosSprite: TSprite;
       
   716             ejectX, ejectY: Longint;
       
   717             end = (
       
   718             (NameId: sidNothing;
       
   719             NameTex: nil;
       
   720             Probability: 0;
       
   721             NumberInCase: 0;
       
   722             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Effect;
       
   723                 Count: AMMO_INFINITE;
       
   724                 NumPerTurn: 0;
       
   725                 Timer: 0;
       
   726                 Pos: 0;
       
   727                 AmmoType: amNothing;
       
   728                 AttackVoice: sndNone);
       
   729             Slot: 0;
       
   730             TimeAfterTurn: 0;
       
   731             minAngle: 0;
       
   732             maxAngle: 0;
       
   733             isDamaging: false;
       
   734             SkipTurns: 9999;
       
   735             PosCount: 1;
       
   736             PosSprite: sprWater;
       
   737             ejectX: 0;
       
   738             ejectY: 0),
       
   739 
       
   740 // Grenade
       
   741             (NameId: sidGrenade;
       
   742             NameTex: nil;
       
   743             Probability: 0;
       
   744             NumberInCase: 1;
       
   745             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
       
   746                 Count: AMMO_INFINITE;
       
   747                 NumPerTurn: 0;
       
   748                 Timer: 3000;
       
   749                 Pos: 0;
       
   750                 AmmoType: amGrenade;
       
   751                 AttackVoice: sndCover);
       
   752             Slot: 1;
       
   753             TimeAfterTurn: 3000;
       
   754             minAngle: 0;
       
   755             maxAngle: 0;
       
   756             isDamaging: true;
       
   757             SkipTurns: 0;
       
   758             PosCount: 1;
       
   759             PosSprite: sprWater;
       
   760             ejectX: 0;
       
   761             ejectY: 0),
       
   762 
       
   763 // ClusterBomb
       
   764             (NameId: sidClusterBomb;
       
   765             NameTex: nil;
       
   766             Probability: 100;
       
   767             NumberInCase: 3;
       
   768             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
       
   769                 Count: 5;
       
   770                 NumPerTurn: 0;
       
   771                 Timer: 3000;
       
   772                 Pos: 0;
       
   773                 AmmoType: amClusterBomb;
       
   774                 AttackVoice: sndCover);
       
   775             Slot: 1;
       
   776             TimeAfterTurn: 3000;
       
   777             minAngle: 0;
       
   778             maxAngle: 0;
       
   779             isDamaging: true;
       
   780             SkipTurns: 0;
       
   781             PosCount: 1;
       
   782             PosSprite: sprWater;
       
   783             ejectX: 0;
       
   784             ejectY: 0),
       
   785 
       
   786 // Bazooka
       
   787             (NameId: sidBazooka;
       
   788             NameTex: nil;
       
   789             Probability: 0;
       
   790             NumberInCase: 1;
       
   791             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
       
   792                 Count: AMMO_INFINITE;
       
   793                 NumPerTurn: 0;
       
   794                 Timer: 0;
       
   795                 Pos: 0;
       
   796                 AmmoType: amBazooka;
       
   797                 AttackVoice: sndNone);
       
   798             Slot: 0;
       
   799             TimeAfterTurn: 3000;
       
   800             minAngle: 0;
       
   801             maxAngle: 0;
       
   802             isDamaging: true;
       
   803             SkipTurns: 0;
       
   804             PosCount: 1;
       
   805             PosSprite: sprWater;
       
   806             ejectX: 0; //20;
       
   807             ejectY: -6),
       
   808 
       
   809 // Bee
       
   810             (NameId: sidBee;
       
   811             NameTex: nil;
       
   812             Probability: 100;
       
   813             NumberInCase: 1;
       
   814             Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold;
       
   815                 Count: 2;
       
   816                 NumPerTurn: 0;
       
   817                 Timer: 0;
       
   818                 Pos: 0;
       
   819                 AmmoType: amBee;
       
   820                 AttackVoice: sndNone);
       
   821             Slot: 0;
       
   822             TimeAfterTurn: 3000;
       
   823             minAngle: 0;
       
   824             maxAngle: 0;
       
   825             isDamaging: true;
       
   826             SkipTurns: 0;
       
   827             PosCount: 1;
       
   828             PosSprite: sprWater;
       
   829             ejectX: 0; //16;
       
   830             ejectY: 0),
       
   831 
       
   832 // Shotgun
       
   833             (NameId: sidShotgun;
       
   834             NameTex: nil;
       
   835             Probability: 0;
       
   836             NumberInCase: 1;
       
   837             Ammo: (Propz: ammoprop_ForwMsgs;
       
   838                 Count: AMMO_INFINITE;
       
   839                 NumPerTurn: 1;
       
   840                 Timer: 0;
       
   841                 Pos: 0;
       
   842                 AmmoType: amShotgun;
       
   843                 AttackVoice: sndNone);
       
   844             Slot: 2;
       
   845             TimeAfterTurn: 3000;
       
   846             minAngle: 0;
       
   847             maxAngle: 0;
       
   848             isDamaging: true;
       
   849             SkipTurns: 0;
       
   850             PosCount: 1;
       
   851             PosSprite: sprWater;
       
   852             ejectX: 0; //26;
       
   853             ejectY: -6),
       
   854 
       
   855 // PickHammer
       
   856             (NameId: sidPickHammer;
       
   857             NameTex: nil;
       
   858             Probability: 0;
       
   859             NumberInCase: 1;
       
   860             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
       
   861                 Count: 2;
       
   862                 NumPerTurn: 0;
       
   863                 Timer: 0;
       
   864                 Pos: 0;
       
   865                 AmmoType: amPickHammer;
       
   866                 AttackVoice: sndNone);
       
   867             Slot: 6;
       
   868             TimeAfterTurn: 0;
       
   869             minAngle: 0;
       
   870             maxAngle: 0;
       
   871             isDamaging: false;
       
   872             SkipTurns: 0;
       
   873             PosCount: 1;
       
   874             PosSprite: sprWater;
       
   875             ejectX: 0;
       
   876             ejectY: 0),
       
   877 
       
   878 // Skip
       
   879             (NameId: sidSkip;
       
   880             NameTex: nil;
       
   881             Probability: 0;
       
   882             NumberInCase: 1;
       
   883             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
       
   884                 Count: AMMO_INFINITE;
       
   885                 NumPerTurn: 0;
       
   886                 Timer: 0;
       
   887                 Pos: 0;
       
   888                 AmmoType: amSkip;
       
   889                 AttackVoice: sndNone);
       
   890             Slot: 9;
       
   891             TimeAfterTurn: 0;
       
   892             minAngle: 0;
       
   893             maxAngle: 0;
       
   894             isDamaging: false;
       
   895             SkipTurns: 0;
       
   896             PosCount: 1;
       
   897             PosSprite: sprWater;
       
   898             ejectX: 0;
       
   899             ejectY: 0),
       
   900 
       
   901 // Rope
       
   902             (NameId: sidRope;
       
   903             NameTex: nil;
       
   904             Probability: 100;
       
   905             NumberInCase: 3;
       
   906             Ammo: (Propz: ammoprop_NoRoundEnd or
       
   907                           ammoprop_ForwMsgs or
       
   908                           ammoprop_AttackInMove or
       
   909                           ammoprop_Utility or
       
   910                           ammoprop_AltAttack;
       
   911                     Count: 5;
       
   912                     NumPerTurn: 0;
       
   913                     Timer: 0;
       
   914                     Pos: 0;
       
   915                     AmmoType: amRope;
       
   916                     AttackVoice: sndNone);
       
   917             Slot: 7;
       
   918             TimeAfterTurn: 0;
       
   919             minAngle: 0;
       
   920             maxAngle: cMaxAngle div 2;
       
   921             isDamaging: false;
       
   922             SkipTurns: 0;
       
   923             PosCount: 1;
       
   924             PosSprite: sprWater;
       
   925             ejectX: 0;
       
   926             ejectY: 0),
       
   927 
       
   928 // Mine
       
   929             (NameId: sidMine;
       
   930             NameTex: nil;
       
   931             Probability: 100;
       
   932             NumberInCase: 1;
       
   933             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
       
   934                 Count: 2;
       
   935                 NumPerTurn: 0;
       
   936                 Timer: 0;
       
   937                 Pos: 0;
       
   938                 AmmoType: amMine;
       
   939                 AttackVoice: sndLaugh);
       
   940             Slot: 4;
       
   941             TimeAfterTurn: 5000;
       
   942             minAngle: 0;
       
   943             maxAngle: 0;
       
   944             isDamaging: true;
       
   945             SkipTurns: 0;
       
   946             PosCount: 1;
       
   947             PosSprite: sprWater;
       
   948             ejectX: 0;
       
   949             ejectY: 0),
       
   950 
       
   951 // DEagle
       
   952             (NameId: sidDEagle;
       
   953             NameTex: nil;
       
   954             Probability: 20;
       
   955             NumberInCase: 2;
       
   956             Ammo: (Propz: 0;
       
   957                 Count: 3;
       
   958                 NumPerTurn: 3;
       
   959                 Timer: 0;
       
   960                 Pos: 0;
       
   961                 AmmoType: amDEagle;
       
   962                 AttackVoice: sndNone);
       
   963             Slot: 2;
       
   964             TimeAfterTurn: 3000;
       
   965             minAngle: 0;
       
   966             maxAngle: 0;
       
   967             isDamaging: true;
       
   968             SkipTurns: 0;
       
   969             PosCount: 1;
       
   970             PosSprite: sprWater;
       
   971             ejectX: 0; //23;
       
   972             ejectY: -6),
       
   973 
       
   974 // Dynamite
       
   975             (NameId: sidDynamite;
       
   976             NameTex: nil;
       
   977             Probability: 100;
       
   978             NumberInCase: 1;
       
   979             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
       
   980                 Count: 1;
       
   981                 NumPerTurn: 0;
       
   982                 Timer: 0;
       
   983                 Pos: 0;
       
   984                 AmmoType: amDynamite;
       
   985                 AttackVoice: sndLaugh);
       
   986             Slot: 4;
       
   987             TimeAfterTurn: 5000;
       
   988             minAngle: 0;
       
   989             maxAngle: 0;
       
   990             isDamaging: true;
       
   991             SkipTurns: 0;
       
   992             PosCount: 1;
       
   993             PosSprite: sprWater;
       
   994             ejectX: 0;
       
   995             ejectY: 0),
       
   996 
       
   997 // FirePunch
       
   998             (NameId: sidFirePunch;
       
   999             NameTex: nil;
       
  1000             Probability: 0;
       
  1001             NumberInCase: 1;
       
  1002             Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
       
  1003                 Count: AMMO_INFINITE;
       
  1004                 NumPerTurn: 0;
       
  1005                 Timer: 0;
       
  1006                 Pos: 0;
       
  1007                 AmmoType: amFirePunch;
       
  1008                 AttackVoice: sndNone);
       
  1009             Slot: 3;
       
  1010             TimeAfterTurn: 3000;
       
  1011             MinAngle: 0;
       
  1012             maxAngle: 0;
       
  1013             isDamaging: true;
       
  1014             SkipTurns: 0;
       
  1015             PosCount: 1;
       
  1016             PosSprite: sprWater;
       
  1017             ejectX: 0;
       
  1018             ejectY: 0),
       
  1019 
       
  1020 // Whip
       
  1021             (NameId: sidWhip;
       
  1022             NameTex: nil;
       
  1023             Probability: 0;
       
  1024             NumberInCase: 1;
       
  1025             Ammo: (Propz: ammoprop_NoCrosshair;
       
  1026                 Count: AMMO_INFINITE;
       
  1027                 NumPerTurn: 0;
       
  1028                 Timer: 0;
       
  1029                 Pos: 0;
       
  1030                 AmmoType: amWhip;
       
  1031                 AttackVoice: sndNone);
       
  1032             Slot: 3;
       
  1033             TimeAfterTurn: 3000;
       
  1034             MinAngle: 0;
       
  1035             maxAngle: 0;
       
  1036             isDamaging: true;
       
  1037             SkipTurns: 0;
       
  1038             PosCount: 1;
       
  1039             PosSprite: sprWater;
       
  1040             ejectX: 0;
       
  1041             ejectY: 0),
       
  1042 
       
  1043 // BaseballBat
       
  1044             (NameId: sidBaseballBat;
       
  1045             NameTex: nil;
       
  1046             Probability: 100;
       
  1047             NumberInCase: 1;
       
  1048             Ammo: (Propz: ammoprop_DontHold;
       
  1049                 Count: 1;
       
  1050                 NumPerTurn: 0;
       
  1051                 Timer: 0;
       
  1052                 Pos: 0;
       
  1053                 AmmoType: amBaseballBat;
       
  1054                 AttackVoice: sndNone);
       
  1055             Slot: 3;
       
  1056             TimeAfterTurn: 5000;
       
  1057             minAngle: 0;
       
  1058             maxAngle: cMaxAngle div 2;
       
  1059             isDamaging: true;
       
  1060             SkipTurns: 2;
       
  1061             PosCount: 1;
       
  1062             PosSprite: sprWater;
       
  1063             ejectX: 0;
       
  1064             ejectY: 0),
       
  1065 
       
  1066 // Parachute
       
  1067             (NameId: sidParachute;
       
  1068             NameTex: nil;
       
  1069             Probability: 100;
       
  1070             NumberInCase: 1;
       
  1071             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1072                           ammoprop_ForwMsgs or
       
  1073                           ammoprop_AttackInMove or
       
  1074                           ammoprop_NoCrosshair or
       
  1075                           ammoprop_DontHold or
       
  1076                           ammoprop_Utility or
       
  1077                           ammoprop_AltAttack;
       
  1078                 Count: 2;
       
  1079                 NumPerTurn: 0;
       
  1080                 Timer: 0;
       
  1081                 Pos: 0;
       
  1082                 AmmoType: amParachute;
       
  1083                 AttackVoice: sndNone);
       
  1084             Slot: 7;
       
  1085             TimeAfterTurn: 0;
       
  1086             minAngle: 0;
       
  1087             maxAngle: 0;
       
  1088             isDamaging: false;
       
  1089             SkipTurns: 0;
       
  1090             PosCount: 1;
       
  1091             PosSprite: sprWater;
       
  1092             ejectX: 0;
       
  1093             ejectY: 0),
       
  1094 
       
  1095 // AirAttack
       
  1096             (NameId: sidAirAttack;
       
  1097             NameTex: nil;
       
  1098             Probability: 100;
       
  1099             NumberInCase: 1;
       
  1100             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1101                             ammoprop_NeedTarget or
       
  1102                             ammoprop_AttackingPut or
       
  1103                             ammoprop_DontHold or
       
  1104                             ammoprop_NotBorder;
       
  1105                 Count: 1;
       
  1106                 NumPerTurn: 0;
       
  1107                 Timer: 0;
       
  1108                 Pos: 0;
       
  1109                 AmmoType: amAirAttack;
       
  1110                 AttackVoice: sndIncoming);
       
  1111             Slot: 5;
       
  1112             TimeAfterTurn: 0;
       
  1113             minAngle: 0;
       
  1114             maxAngle: 0;
       
  1115             isDamaging: true;
       
  1116             SkipTurns: 5;
       
  1117             PosCount: 2;
       
  1118             PosSprite: sprAmAirplane;
       
  1119             ejectX: 0;
       
  1120             ejectY: 0),
       
  1121 
       
  1122 // MineStrike
       
  1123             (NameId: sidMineStrike;
       
  1124             NameTex: nil;
       
  1125             Probability: 200;
       
  1126             NumberInCase: 1;
       
  1127             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1128                             ammoprop_NeedTarget or
       
  1129                             ammoprop_AttackingPut or
       
  1130                             ammoprop_DontHold or
       
  1131                             ammoprop_NotBorder;
       
  1132                 Count: 1;
       
  1133                 NumPerTurn: 0;
       
  1134                 Timer: 0;
       
  1135                 Pos: 0;
       
  1136                 AmmoType: amMineStrike;
       
  1137                 AttackVoice: sndIncoming);
       
  1138             Slot: 5;
       
  1139             TimeAfterTurn: 0;
       
  1140             minAngle: 0;
       
  1141             maxAngle: 0;
       
  1142             isDamaging: true;
       
  1143             SkipTurns: 5;
       
  1144             PosCount: 2;
       
  1145             PosSprite: sprAmAirplane;
       
  1146             ejectX: 0;
       
  1147             ejectY: 0),
       
  1148 
       
  1149 // BlowTorch
       
  1150             (NameId: sidBlowTorch;
       
  1151             NameTex: nil;
       
  1152             Probability: 100;
       
  1153             NumberInCase: 2;
       
  1154             Ammo: (Propz: ammoprop_ForwMsgs;
       
  1155                 Count: 1;
       
  1156                 NumPerTurn: 0;
       
  1157                 Timer: 0;
       
  1158                 Pos: 0;
       
  1159                 AmmoType: amBlowTorch;
       
  1160                 AttackVoice: sndNone);
       
  1161             Slot: 6;
       
  1162             TimeAfterTurn: 3000;
       
  1163             minAngle: 768;
       
  1164             maxAngle: 1280;
       
  1165             isDamaging: false;
       
  1166             SkipTurns: 0;
       
  1167             PosCount: 1;
       
  1168             PosSprite: sprWater;
       
  1169             ejectX: 0;
       
  1170             ejectY: 0),
       
  1171 
       
  1172 // Girder
       
  1173             (NameId: sidGirder;
       
  1174             NameTex: nil;
       
  1175             Probability: 150;
       
  1176             NumberInCase: 3;
       
  1177             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1178                           ammoprop_NoCrosshair or
       
  1179                           ammoprop_NeedTarget or
       
  1180                           ammoprop_Utility or
       
  1181                           ammoprop_AttackingPut;
       
  1182                     Count: 1;
       
  1183                     NumPerTurn: 0;
       
  1184                     Timer: 0;
       
  1185                     Pos: 0;
       
  1186                     AmmoType: amGirder;
       
  1187                     AttackVoice: sndNone);
       
  1188             Slot: 6;
       
  1189             TimeAfterTurn: 3000;
       
  1190             minAngle: 0;
       
  1191             maxAngle: 0;
       
  1192             isDamaging: false;
       
  1193             SkipTurns: 0;
       
  1194             PosCount: 8;
       
  1195             PosSprite: sprAmGirder;
       
  1196             ejectX: 0;
       
  1197             ejectY: 0),
       
  1198 
       
  1199 // Teleport
       
  1200             (NameId: sidTeleport;
       
  1201             NameTex: nil;
       
  1202             Probability: 200;
       
  1203             NumberInCase: 1;
       
  1204             Ammo: (Propz: ammoprop_ForwMsgs or
       
  1205                           ammoprop_NoCrosshair or
       
  1206                           ammoprop_NeedTarget or
       
  1207                           ammoprop_AttackingPut or
       
  1208                           ammoprop_Utility or
       
  1209                           ammoprop_DontHold;
       
  1210                 Count: 2;
       
  1211                 NumPerTurn: 0;
       
  1212                 Timer: 0;
       
  1213                 Pos: 0;
       
  1214                 AmmoType: amTeleport;
       
  1215                 AttackVoice: sndNone);
       
  1216             Slot: 7;
       
  1217             TimeAfterTurn: 0;
       
  1218             minAngle: 0;
       
  1219             maxAngle: 0;
       
  1220             isDamaging: false;
       
  1221             SkipTurns: 0;
       
  1222             PosCount: 2;
       
  1223             PosSprite: sprAmTeleport;
       
  1224             ejectX: 0;
       
  1225             ejectY: 0),
       
  1226 
       
  1227 // Switch
       
  1228             (NameId: sidSwitch;
       
  1229             NameTex: nil;
       
  1230             Probability: 100;
       
  1231             NumberInCase: 1;
       
  1232             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1233                           ammoprop_ForwMsgs or
       
  1234                           ammoprop_NoCrosshair or
       
  1235                           ammoprop_Utility or
       
  1236                           ammoprop_DontHold;
       
  1237                     Count: 3;
       
  1238                     NumPerTurn: 0;
       
  1239                     Timer: 0;
       
  1240                     Pos: 0;
       
  1241                     AmmoType: amSwitch;
       
  1242                     AttackVoice: sndNone);
       
  1243             Slot: 9;
       
  1244             TimeAfterTurn: 0;
       
  1245             minAngle: 0;
       
  1246             maxAngle: 0;
       
  1247             isDamaging: false;
       
  1248             SkipTurns: 0;
       
  1249             PosCount: 1;
       
  1250             PosSprite: sprWater;
       
  1251             ejectX: 0;
       
  1252             ejectY: 0),
       
  1253 
       
  1254 // Mortar
       
  1255             (NameId: sidMortar;
       
  1256             NameTex: nil;
       
  1257             Probability: 100;
       
  1258             NumberInCase: 4;
       
  1259             Ammo: (Propz: 0;
       
  1260                 Count: 4;
       
  1261                 NumPerTurn: 0;
       
  1262                 Timer: 0;
       
  1263                 Pos: 0;
       
  1264                 AmmoType: amMortar;
       
  1265                 AttackVoice: sndNone);
       
  1266             Slot: 0;
       
  1267             TimeAfterTurn: 3000;
       
  1268             minAngle: 0;
       
  1269             maxAngle: 0;
       
  1270             isDamaging: true;
       
  1271             SkipTurns: 0;
       
  1272             PosCount: 1;
       
  1273             PosSprite: sprWater;
       
  1274             ejectX: 0; //20;
       
  1275             ejectY: -6),
       
  1276 
       
  1277 // Kamikaze
       
  1278             (NameId: sidKamikaze;
       
  1279             NameTex: nil;
       
  1280             Probability: 100;
       
  1281             NumberInCase: 1;
       
  1282             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
       
  1283                 Count: 1;
       
  1284                 NumPerTurn: 0;
       
  1285                 Timer: 0;
       
  1286                 Pos: 0;
       
  1287                 AmmoType: amKamikaze;
       
  1288                 AttackVoice: sndNone);
       
  1289             Slot: 3;
       
  1290             TimeAfterTurn: 0;
       
  1291             minAngle: 0;
       
  1292             maxAngle: 0;
       
  1293             isDamaging: true;
       
  1294             SkipTurns: 0;
       
  1295             PosCount: 1;
       
  1296             PosSprite: sprWater;
       
  1297             ejectX: 0;
       
  1298             ejectY: 0),
       
  1299 
       
  1300 // Cake
       
  1301             (NameId: sidCake;
       
  1302             NameTex: nil;
       
  1303             Probability: 100;
       
  1304             NumberInCase: 1;
       
  1305             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
       
  1306                 Count: 1;
       
  1307                 NumPerTurn: 0;
       
  1308                 Timer: 0;
       
  1309                 Pos: 0;
       
  1310                 AmmoType: amCake;
       
  1311                 AttackVoice: sndLaugh);
       
  1312             Slot: 4;
       
  1313             TimeAfterTurn: 0;
       
  1314             minAngle: 0;
       
  1315             maxAngle: 0;
       
  1316             isDamaging: true;
       
  1317             SkipTurns: 4;
       
  1318             PosCount: 1;
       
  1319             PosSprite: sprWater;
       
  1320             ejectX: 0;
       
  1321             ejectY: 0),
       
  1322 
       
  1323 // Seduction
       
  1324             (NameId: sidSeduction;
       
  1325             NameTex: nil;
       
  1326             Probability: 100;
       
  1327             NumberInCase: 1;
       
  1328             Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
       
  1329                 Count: 1;
       
  1330                 NumPerTurn: 0;
       
  1331                 Timer: 0;
       
  1332                 Pos: 0;
       
  1333                 AmmoType: amSeduction;
       
  1334                 AttackVoice: sndNone);
       
  1335             Slot: 3;
       
  1336             TimeAfterTurn: 0;
       
  1337             minAngle: 0;
       
  1338             maxAngle: 0;
       
  1339             isDamaging: false;
       
  1340             SkipTurns: 0;
       
  1341             PosCount: 1;
       
  1342             PosSprite: sprWater;
       
  1343             ejectX: 0;
       
  1344             ejectY: 0),
       
  1345 
       
  1346 // Watermelon
       
  1347             (NameId: sidWatermelon;
       
  1348             NameTex: nil;
       
  1349             Probability: 400;
       
  1350             NumberInCase: 1;
       
  1351             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
       
  1352                 Count: 0;
       
  1353                 NumPerTurn: 0;
       
  1354                 Timer: 3000;
       
  1355                 Pos: 0;
       
  1356                 AmmoType: amWatermelon;
       
  1357                 AttackVoice: sndMelon);
       
  1358             Slot: 1;
       
  1359             TimeAfterTurn: 3000;
       
  1360             minAngle: 0;
       
  1361             maxAngle: 0;
       
  1362             isDamaging: true;
       
  1363             SkipTurns: 0;
       
  1364             PosCount: 1;
       
  1365             PosSprite: sprWater;
       
  1366             ejectX: 0;
       
  1367             ejectY: 0),
       
  1368 
       
  1369 // HellishBomb ("Hellish Hand-Grenade")
       
  1370             (NameId: sidHellishBomb;
       
  1371             NameTex: nil;
       
  1372             Probability: 400;
       
  1373             NumberInCase: 1;
       
  1374             Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
       
  1375                 Count: 0;
       
  1376                 NumPerTurn: 0;
       
  1377                 Timer: 5000;
       
  1378                 Pos: 0;
       
  1379                 AmmoType: amHellishBomb;
       
  1380                 AttackVoice: sndNone);
       
  1381             Slot: 1;
       
  1382             TimeAfterTurn: 3000;
       
  1383             minAngle: 0;
       
  1384             maxAngle: 0;
       
  1385             isDamaging: true;
       
  1386             SkipTurns: 0;
       
  1387             PosCount: 1;
       
  1388             PosSprite: sprWater;
       
  1389             ejectX: 0;
       
  1390             ejectY: 0),
       
  1391 
       
  1392 // Napalm
       
  1393             (NameId: sidNapalm;
       
  1394             NameTex: nil;
       
  1395             Probability: 100;
       
  1396             NumberInCase: 1;
       
  1397             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1398                             ammoprop_NeedTarget or
       
  1399                             ammoprop_AttackingPut or
       
  1400                             ammoprop_DontHold or
       
  1401                             ammoprop_NotBorder;
       
  1402                 Count: 1;
       
  1403                 NumPerTurn: 0;
       
  1404                 Timer: 0;
       
  1405                 Pos: 0;
       
  1406                 AmmoType: amNapalm;
       
  1407                 AttackVoice: sndIncoming);
       
  1408             Slot: 5;
       
  1409             TimeAfterTurn: 0;
       
  1410             minAngle: 0;
       
  1411             maxAngle: 0;
       
  1412             isDamaging: true;
       
  1413             SkipTurns: 7;
       
  1414             PosCount: 2;
       
  1415             PosSprite: sprAmAirplane;
       
  1416             ejectX: 0;
       
  1417             ejectY: 0),
       
  1418 
       
  1419 // Drill ("Drill Rocket")
       
  1420             (NameId: sidDrill;
       
  1421             NameTex: nil;
       
  1422             Probability: 300;
       
  1423             NumberInCase: 1;
       
  1424             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
       
  1425                 Count: AMMO_INFINITE;
       
  1426                 NumPerTurn: 0;
       
  1427                 Timer: 0;
       
  1428                 Pos: 0;
       
  1429                 AmmoType: amDrill;
       
  1430                 AttackVoice: sndNone);
       
  1431             Slot: 0;
       
  1432             TimeAfterTurn: 3000;
       
  1433             minAngle: 0;
       
  1434             maxAngle: 0;
       
  1435             isDamaging: true;
       
  1436             SkipTurns: 0;
       
  1437             PosCount: 1;
       
  1438             PosSprite: sprDrill;
       
  1439             ejectX: 0; //20;
       
  1440             ejectY: -6),
       
  1441 
       
  1442 // Ballgun
       
  1443             (NameId: sidBallgun;
       
  1444             NameTex: nil;
       
  1445             Probability: 400;
       
  1446             NumberInCase: 1;
       
  1447             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
       
  1448                 Count: AMMO_INFINITE;
       
  1449                 NumPerTurn: 0;
       
  1450                 Timer: 5001;
       
  1451                 Pos: 0;
       
  1452                 AmmoType: amBallgun;
       
  1453                 AttackVoice: sndNone);
       
  1454             Slot: 4;
       
  1455             TimeAfterTurn: 0;
       
  1456             minAngle: 0;
       
  1457             maxAngle: 0;
       
  1458             isDamaging: true;
       
  1459             SkipTurns: 0;
       
  1460             PosCount: 1;
       
  1461             PosSprite: sprWater;
       
  1462             ejectX: 0; //20;
       
  1463             ejectY: -3),
       
  1464 
       
  1465 // RC-Plane
       
  1466             (NameId: sidRCPlane;
       
  1467             NameTex: nil;
       
  1468             Probability: 200;
       
  1469             NumberInCase: 1;
       
  1470             Ammo: (Propz: ammoprop_ForwMsgs{ or
       
  1471                             ammoprop_DontHold or
       
  1472                             ammoprop_AltAttack};
       
  1473                 Count: 1;
       
  1474                 NumPerTurn: 0;
       
  1475                 Timer: 0;
       
  1476                 Pos: 0;
       
  1477                 AmmoType: amRCPlane;
       
  1478                 AttackVoice: sndNone);
       
  1479             Slot: 4;
       
  1480             TimeAfterTurn: 0;
       
  1481             minAngle: 0;
       
  1482             maxAngle: 0;
       
  1483             isDamaging: true;
       
  1484             SkipTurns: 4;
       
  1485             PosCount: 1;
       
  1486             PosSprite: sprWater;
       
  1487             ejectX: 0;
       
  1488             ejectY: 0),
       
  1489 
       
  1490 // LowGravity
       
  1491             (NameId: sidLowGravity;
       
  1492             NameTex: nil;
       
  1493             Probability: 20;
       
  1494             NumberInCase: 1;
       
  1495             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1496                           ammoprop_NoCrosshair or
       
  1497                           ammoprop_DontHold or
       
  1498                           ammoprop_AltUse or
       
  1499                           ammoprop_Utility or
       
  1500                           ammoprop_Effect;
       
  1501                     Count: 1;
       
  1502                     NumPerTurn: 0;
       
  1503                     Timer: 0;
       
  1504                     Pos: 0;
       
  1505                     AmmoType: amLowGravity;
       
  1506                     AttackVoice: sndNone);
       
  1507             Slot: 9;
       
  1508             TimeAfterTurn: 0;
       
  1509             minAngle: 0;
       
  1510             maxAngle: 0;
       
  1511             isDamaging: false;
       
  1512             SkipTurns: 0;
       
  1513             PosCount: 1;
       
  1514             PosSprite: sprWater;
       
  1515             ejectX: 0;
       
  1516             ejectY: 0),
       
  1517 
       
  1518 // ExtraDamage
       
  1519             (NameId: sidExtraDamage;
       
  1520             NameTex: nil;
       
  1521             Probability: 15;
       
  1522             NumberInCase: 1;
       
  1523             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1524                           ammoprop_NoCrosshair or
       
  1525                           ammoprop_DontHold or
       
  1526                           ammoprop_AltUse or
       
  1527                           ammoprop_Utility or
       
  1528                           ammoprop_Effect;
       
  1529                     Count: 1;
       
  1530                     NumPerTurn: 0;
       
  1531                     Timer: 0;
       
  1532                     Pos: 0;
       
  1533                     AmmoType: amExtraDamage;
       
  1534                     AttackVoice: sndNone);
       
  1535             Slot: 9;
       
  1536             TimeAfterTurn: 0;
       
  1537             minAngle: 0;
       
  1538             maxAngle: 0;
       
  1539             isDamaging: false;
       
  1540             SkipTurns: 0;
       
  1541             PosCount: 1;
       
  1542             PosSprite: sprWater;
       
  1543             ejectX: 0;
       
  1544             ejectY: 0),
       
  1545 
       
  1546 // Invulnerable
       
  1547             (NameId: sidInvulnerable;
       
  1548             NameTex: nil;
       
  1549             Probability: 20;
       
  1550             NumberInCase: 1;
       
  1551             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1552                           ammoprop_NoCrosshair or
       
  1553                           ammoprop_DontHold or
       
  1554                           ammoprop_AltUse or
       
  1555                           ammoprop_Utility or
       
  1556                           ammoprop_Effect;
       
  1557                     Count: 1;
       
  1558                     NumPerTurn: 0;
       
  1559                     Timer: 0;
       
  1560                     Pos: 0;
       
  1561                     AmmoType: amInvulnerable;
       
  1562                     AttackVoice: sndNone);
       
  1563             Slot: 8;
       
  1564             TimeAfterTurn: 0;
       
  1565             minAngle: 0;
       
  1566             maxAngle: 0;
       
  1567             isDamaging: false;
       
  1568             SkipTurns: 0;
       
  1569             PosCount: 1;
       
  1570             PosSprite: sprWater;
       
  1571             ejectX: 0;
       
  1572             ejectY: 0),
       
  1573 
       
  1574 // ExtraTime
       
  1575             (NameId: sidExtraTime;
       
  1576             NameTex: nil;
       
  1577             Probability: 30;
       
  1578             NumberInCase: 1;
       
  1579             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1580                           ammoprop_NoCrosshair or
       
  1581                           ammoprop_DontHold or
       
  1582                           ammoprop_AltUse or
       
  1583                           ammoprop_Utility or
       
  1584                           ammoprop_Effect;
       
  1585                     Count: 1;
       
  1586                     NumPerTurn: 0;
       
  1587                     Timer: 0;
       
  1588                     Pos: 0;
       
  1589                     AmmoType: amExtraTime;
       
  1590                     AttackVoice: sndNone);
       
  1591             Slot: 9;
       
  1592             TimeAfterTurn: 0;
       
  1593             minAngle: 0;
       
  1594             maxAngle: 0;
       
  1595             isDamaging: false;
       
  1596             SkipTurns: 0;
       
  1597             PosCount: 1;
       
  1598             PosSprite: sprWater;
       
  1599             ejectX: 0;
       
  1600             ejectY: 0),
       
  1601 
       
  1602 // LaserSight
       
  1603             (NameId: sidLaserSight;
       
  1604             NameTex: nil;
       
  1605             Probability: 15;
       
  1606             NumberInCase: 1;
       
  1607             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1608                           ammoprop_NoCrosshair or
       
  1609                           ammoprop_DontHold or
       
  1610                           ammoprop_AltUse or
       
  1611                           ammoprop_Utility or
       
  1612                           ammoprop_Effect;
       
  1613                     Count: 1;
       
  1614                     NumPerTurn: 0;
       
  1615                     Timer: 0;
       
  1616                     Pos: 0;
       
  1617                     AmmoType: amLaserSight;
       
  1618                     AttackVoice: sndNone);
       
  1619             Slot: 8;
       
  1620             TimeAfterTurn: 0;
       
  1621             minAngle: 0;
       
  1622             maxAngle: 0;
       
  1623             isDamaging: false;
       
  1624             SkipTurns: 0;
       
  1625             PosCount: 1;
       
  1626             PosSprite: sprWater;
       
  1627             ejectX: 0;
       
  1628             ejectY: 0),
       
  1629 
       
  1630 // Vampiric
       
  1631             (NameId: sidVampiric;
       
  1632             NameTex: nil;
       
  1633             Probability: 15;
       
  1634             NumberInCase: 1;
       
  1635             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1636                           ammoprop_NoCrosshair or
       
  1637                           ammoprop_DontHold or
       
  1638                           ammoprop_AltUse or
       
  1639                           ammoprop_Utility or
       
  1640                           ammoprop_Effect;
       
  1641                     Count: 1;
       
  1642                     NumPerTurn: 0;
       
  1643                     Timer: 0;
       
  1644                     Pos: 0;
       
  1645                     AmmoType: amVampiric;
       
  1646                     AttackVoice: sndNone);
       
  1647             Slot: 8;
       
  1648             TimeAfterTurn: 0;
       
  1649             minAngle: 0;
       
  1650             maxAngle: 0;
       
  1651             isDamaging: false;
       
  1652             SkipTurns: 0;
       
  1653             PosCount: 1;
       
  1654             PosSprite: sprWater;
       
  1655             ejectX: 0;
       
  1656             ejectY: 0),
       
  1657 
       
  1658 // SniperRifle
       
  1659             (NameId: sidSniperRifle;
       
  1660             NameTex: nil;
       
  1661             Probability: 20;
       
  1662             NumberInCase: 2;
       
  1663             Ammo: (Propz: 0;
       
  1664                 Count: 2;
       
  1665                 NumPerTurn: 1;
       
  1666                 Timer: 0;
       
  1667                 Pos: 0;
       
  1668                 AmmoType: amSniperRifle;
       
  1669                 AttackVoice: sndNone);
       
  1670             Slot: 2;
       
  1671             TimeAfterTurn: 3000;
       
  1672             minAngle: 0;
       
  1673             maxAngle: 0;
       
  1674             isDamaging: true;
       
  1675             SkipTurns: 0;
       
  1676             PosCount: 1;
       
  1677             PosSprite: sprWater;
       
  1678             ejectX: 0; //40;
       
  1679             ejectY: -5),
       
  1680 
       
  1681 // Jetpack ("Flying Saucer")
       
  1682             (NameId: sidJetpack;
       
  1683             NameTex: nil;
       
  1684             Probability: 20;
       
  1685             NumberInCase: 1;
       
  1686             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1687                           ammoprop_ForwMsgs or
       
  1688                           ammoprop_AttackInMove or
       
  1689                           ammoprop_NoCrosshair or
       
  1690                           ammoprop_DontHold or
       
  1691                           ammoprop_Utility or
       
  1692                           ammoprop_AltAttack;
       
  1693                 Count: 1;
       
  1694                 NumPerTurn: 0;
       
  1695                 Timer: 0;
       
  1696                 Pos: 0;
       
  1697                 AmmoType: amJetpack;
       
  1698                 AttackVoice: sndNone);
       
  1699             Slot: 7;
       
  1700             TimeAfterTurn: 3000;
       
  1701             minAngle: 0;
       
  1702             maxAngle: 0;
       
  1703             isDamaging: false;
       
  1704             SkipTurns: 0;
       
  1705             PosCount: 1;
       
  1706             PosSprite: sprWater;
       
  1707             ejectX: 0;
       
  1708             ejectY: 0),
       
  1709 
       
  1710 // Molotov
       
  1711             (NameId: sidMolotov;
       
  1712             NameTex: nil;
       
  1713             Probability: 0;
       
  1714             NumberInCase: 1;
       
  1715             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
       
  1716                 Count: AMMO_INFINITE;
       
  1717                 NumPerTurn: 0;
       
  1718                 Timer: 3000;
       
  1719                 Pos: 0;
       
  1720                 AmmoType: amMolotov;
       
  1721                 AttackVoice: sndNone);
       
  1722             Slot: 1;
       
  1723             TimeAfterTurn: 3000;
       
  1724             minAngle: 0;
       
  1725             maxAngle: 0;
       
  1726             isDamaging: true;
       
  1727             SkipTurns: 0;
       
  1728             PosCount: 1;
       
  1729             PosSprite: sprWater;
       
  1730             ejectX: 0;
       
  1731             ejectY: 0),
       
  1732 
       
  1733 // Birdy
       
  1734             (NameId: sidBirdy;
       
  1735             NameTex: nil;
       
  1736             Probability: 20;
       
  1737             NumberInCase: 1;
       
  1738             Ammo: (Propz: ammoprop_ForwMsgs or
       
  1739                           ammoprop_NoCrosshair or
       
  1740                           ammoprop_DontHold;
       
  1741                 Count: 1;
       
  1742                 NumPerTurn: 0;
       
  1743                 Timer: 0;
       
  1744                 Pos: 0;
       
  1745                 AmmoType: amBirdy;
       
  1746                 AttackVoice: sndNone);
       
  1747             Slot: 7;
       
  1748             TimeAfterTurn: 3000;
       
  1749             minAngle: 0;
       
  1750             maxAngle: 0;
       
  1751             isDamaging: true;
       
  1752             SkipTurns: 0;
       
  1753             PosCount: 1;
       
  1754             PosSprite: sprWater;
       
  1755             ejectX: 0;
       
  1756             ejectY: 0),
       
  1757 
       
  1758 // PortalGun
       
  1759             (NameId: sidPortalGun;
       
  1760             NameTex: nil;
       
  1761             Probability: 20;
       
  1762             NumberInCase: 1;
       
  1763             Ammo: (Propz: ammoprop_NoRoundEnd or
       
  1764                           ammoprop_AttackInMove or
       
  1765                           ammoprop_DontHold or
       
  1766                           ammoprop_Utility;
       
  1767                 Count: 1;
       
  1768                 NumPerTurn: 3;
       
  1769                 Timer: 0;
       
  1770                 Pos: 0;
       
  1771                 AmmoType: amPortalGun;
       
  1772                 AttackVoice: sndNone);
       
  1773             Slot: 6;
       
  1774             TimeAfterTurn: 0;
       
  1775             minAngle: 0;
       
  1776             maxAngle: 0;
       
  1777             isDamaging: false;
       
  1778             SkipTurns: 0;
       
  1779             PosCount: 1;
       
  1780             PosSprite: sprWater;
       
  1781             ejectX: -5; //29;
       
  1782             ejectY: -7),
       
  1783 
       
  1784 // Piano
       
  1785             (NameId: sidPiano;
       
  1786             NameTex: nil;
       
  1787             Probability: 100;
       
  1788             NumberInCase: 1;
       
  1789             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1790                             ammoprop_NeedTarget or
       
  1791                             ammoprop_AttackingPut or
       
  1792                             ammoprop_DontHold or
       
  1793                             ammoprop_NotBorder;
       
  1794                 Count: 1;
       
  1795                 NumPerTurn: 0;
       
  1796                 Timer: 0;
       
  1797                 Pos: 0;
       
  1798                 AmmoType: amPiano;
       
  1799                 AttackVoice: sndIncoming);
       
  1800             Slot: 5;
       
  1801             TimeAfterTurn: 0;
       
  1802             minAngle: 0;
       
  1803             maxAngle: 0;
       
  1804             isDamaging: true;
       
  1805             SkipTurns: 7;
       
  1806             PosCount: 1;
       
  1807             PosSprite: sprWater;
       
  1808             ejectX: 0;
       
  1809             ejectY: 0),
       
  1810 
       
  1811 // GasBomb
       
  1812             (NameId: sidGasBomb;
       
  1813             NameTex: nil;
       
  1814             Probability: 0;
       
  1815             NumberInCase: 1;
       
  1816             Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
       
  1817                 Count: AMMO_INFINITE;
       
  1818                 NumPerTurn: 0;
       
  1819                 Timer: 3000;
       
  1820                 Pos: 0;
       
  1821                 AmmoType: amGasBomb;
       
  1822                 AttackVoice: sndCover);
       
  1823             Slot: 1;
       
  1824             TimeAfterTurn: 3000;
       
  1825             minAngle: 0;
       
  1826             maxAngle: 0;
       
  1827             isDamaging: true;
       
  1828             SkipTurns: 0;
       
  1829             PosCount: 1;
       
  1830             PosSprite: sprWater;
       
  1831             ejectX: 0;
       
  1832             ejectY: 0),
       
  1833 
       
  1834 // SineGun
       
  1835             (NameId: sidSineGun;
       
  1836             NameTex: nil;
       
  1837             Probability: 20;
       
  1838             NumberInCase: 2;
       
  1839             Ammo: (Propz: ammoprop_AttackInMove;
       
  1840                 Count: 1;
       
  1841                 NumPerTurn: 0;
       
  1842                 Timer: 0;
       
  1843                 Pos: 0;
       
  1844                 AmmoType: amSineGun;
       
  1845                 AttackVoice: sndNone);
       
  1846             Slot: 2;
       
  1847             TimeAfterTurn: 0;
       
  1848             minAngle: 0;
       
  1849             maxAngle: 0;
       
  1850             isDamaging: true;
       
  1851             SkipTurns: 0;
       
  1852             PosCount: 1;
       
  1853             PosSprite: sprWater;
       
  1854             ejectX: 0;
       
  1855             ejectY: 0),
       
  1856 
       
  1857 // Flamethrower
       
  1858             (NameId: sidFlamethrower;
       
  1859             NameTex: nil;
       
  1860             Probability: 20;
       
  1861             NumberInCase: 1;
       
  1862             Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
       
  1863                 Count: 1;
       
  1864                 NumPerTurn: 0;
       
  1865                 Timer: 5001;
       
  1866                 Pos: 0;
       
  1867                 AmmoType: amFlamethrower;
       
  1868                 AttackVoice: sndNone);
       
  1869             Slot: 2;
       
  1870             TimeAfterTurn: 0;
       
  1871             minAngle: 0;
       
  1872             maxAngle: 0;
       
  1873             isDamaging: true;
       
  1874             SkipTurns: 0;
       
  1875             PosCount: 1;
       
  1876             PosSprite: sprWater;
       
  1877             ejectX: 0; //20;
       
  1878             ejectY: -3),
       
  1879 
       
  1880 // Sticky Mine
       
  1881             (NameId: sidSMine;
       
  1882             NameTex: nil;
       
  1883             Probability: 100;
       
  1884             NumberInCase: 1;
       
  1885             Ammo: (Propz: ammoprop_Power; //FIXME: enable multishoot at altuse, until then removed ammoprop_AltUse
       
  1886                 Count: 1;
       
  1887                 NumPerTurn: 1;
       
  1888                 Timer: 0;
       
  1889                 Pos: 0;
       
  1890                 AmmoType: amSMine;
       
  1891                 AttackVoice: sndLaugh);
       
  1892             Slot: 4;
       
  1893             TimeAfterTurn: 5000;
       
  1894             minAngle: 0;
       
  1895             maxAngle: 0;
       
  1896             isDamaging: true;
       
  1897             SkipTurns: 0;
       
  1898             PosCount: 1;
       
  1899             PosSprite: sprWater;
       
  1900             ejectX: 0;
       
  1901             ejectY: 0),
       
  1902 
       
  1903 // Hammer
       
  1904             (NameId: sidHammer;
       
  1905             NameTex: nil;
       
  1906             Probability: 0;
       
  1907             NumberInCase: 1;
       
  1908             Ammo: (Propz: ammoprop_NoCrosshair;
       
  1909                 Count: 1;
       
  1910                 NumPerTurn: 0;
       
  1911                 Timer: 0;
       
  1912                 Pos: 0;
       
  1913                 AmmoType: amHammer;
       
  1914                 AttackVoice: sndNone);
       
  1915             Slot: 3;
       
  1916             TimeAfterTurn: 1000;
       
  1917             MinAngle: 0;
       
  1918             maxAngle: 0;
       
  1919             isDamaging: true;
       
  1920             SkipTurns: 0;
       
  1921             PosCount: 1;
       
  1922             PosSprite: sprWater;
       
  1923             ejectX: 0;
       
  1924             ejectY: 0),
       
  1925 
       
  1926 // Ressurrector
       
  1927         (NameId: sidResurrector;
       
  1928             NameTex: nil;
       
  1929             Probability: 0;
       
  1930             NumberInCase: 1;
       
  1931             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1932                           ammoprop_Utility or
       
  1933                           ammoprop_NoRoundEnd;
       
  1934                 Count: 1;
       
  1935                 NumPerTurn: 0;
       
  1936                 Timer: 0;
       
  1937                 Pos: 0;
       
  1938                 AmmoType: amResurrector;
       
  1939                 AttackVoice: sndNone);
       
  1940             Slot: 8;
       
  1941             TimeAfterTurn: 3000;
       
  1942             minAngle: 0;
       
  1943             maxAngle: 0;
       
  1944             isDamaging: true;
       
  1945             SkipTurns: 0;
       
  1946             PosCount: 1;
       
  1947             PosSprite: sprWater;
       
  1948             ejectX: 0;
       
  1949             ejectY: 0),
       
  1950 
       
  1951 // DrillStrike
       
  1952             (NameId: sidDrillStrike;
       
  1953             NameTex: nil;
       
  1954             Probability: 200;
       
  1955             NumberInCase: 1;
       
  1956             Ammo: (Propz: ammoprop_NoCrosshair or
       
  1957                             ammoprop_NeedTarget or
       
  1958                             ammoprop_AttackingPut or
       
  1959                             ammoprop_DontHold or
       
  1960                             ammoprop_NotBorder;
       
  1961                 Count: 1;
       
  1962                 NumPerTurn: 0;
       
  1963                 Timer: 0;
       
  1964                 Pos: 0;
       
  1965                 AmmoType: amDrillStrike;
       
  1966                 AttackVoice: sndIncoming);
       
  1967             Slot: 5;
       
  1968             TimeAfterTurn: 0;
       
  1969             minAngle: 0;
       
  1970             maxAngle: 0;
       
  1971             isDamaging: true;
       
  1972             SkipTurns: 6;
       
  1973             PosCount: 2;
       
  1974             PosSprite: sprAmAirplane;
       
  1975             ejectX: 0;
       
  1976             ejectY: 0),
       
  1977 // Snowball/Mudball
       
  1978             (NameId: sidSnowball;
       
  1979             NameTex: nil;
       
  1980             Probability: 0;
       
  1981             NumberInCase: 1;
       
  1982             Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
       
  1983                 Count: 2;
       
  1984                 NumPerTurn: 0;
       
  1985                 Timer: 0;
       
  1986                 Pos: 0;
       
  1987                 AmmoType: amSnowball;
       
  1988                 AttackVoice: sndNone);
       
  1989             Slot: 0;
       
  1990             TimeAfterTurn: 3000;
       
  1991             minAngle: 0;
       
  1992             maxAngle: 0;
       
  1993             isDamaging: true;
       
  1994             SkipTurns: 0;
       
  1995             PosCount: 1;
       
  1996             PosSprite: sprWater;
       
  1997             ejectX: 0; 
       
  1998             ejectY: 0)
       
  1999         );
       
  2000 
       
  2001 
       
  2002     conversionFormat: TSDL_PixelFormat = (
       
  2003         palette: nil;
       
  2004         BitsPerPixel : 32;
       
  2005         BytesPerPixel: 4;
       
  2006         Rloss : 0;
       
  2007         Gloss : 0;
       
  2008         Bloss : 0;
       
  2009         Aloss : 0;
       
  2010 {$IFDEF ENDIAN_LITTLE}
       
  2011         Rshift: 0;
       
  2012         Gshift: 8;
       
  2013         Bshift: 16;
       
  2014         Ashift: 24;
       
  2015 {$ELSE}
       
  2016         Rshift: 24;
       
  2017         Gshift: 16;
       
  2018         Bshift: 8;
       
  2019         Ashift: 0;
       
  2020 {$ENDIF}
       
  2021         RMask : RMask;
       
  2022         GMask : GMask;
       
  2023         BMask : BMask;
       
  2024         AMask : AMask;
       
  2025         colorkey: 0;
       
  2026         alpha : 255
       
  2027     );
       
  2028 
       
  2029 
       
  2030 var
       
  2031     Land: TCollisionArray;
       
  2032     LandPixels: TLandArray;
       
  2033     LandDirty: TDirtyTag;
       
  2034     hasBorder: boolean;
       
  2035     hasGirders: boolean;
       
  2036     isMap: boolean;
       
  2037     playHeight, playWidth, leftX, rightX, topY, MaxHedgehogs: Longword;  // idea is that a template can specify height/width.  Or, a map, a height/width by the dimensions of the image.  If the map has pixels near top of image, it triggers border.
       
  2038     LandBackSurface: PSDL_Surface;
       
  2039     digest: shortstring;
       
  2040     CurAmmoGear: PGear;
       
  2041     lastGearByUID: PGear;
       
  2042     GearsList: PGear;
       
  2043     AllInactive: boolean;
       
  2044     PrvInactive: boolean;
       
  2045     KilledHHs: Longword;
       
  2046     SuddenDeath: Boolean;
       
  2047     SuddenDeathDmg: Boolean;
       
  2048     SpeechType: Longword;
       
  2049     SpeechText: shortstring;
       
  2050     skipFlag: boolean;
       
  2051     PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress
       
  2052     StepSoundTimer: LongInt;
       
  2053     StepSoundChannel: LongInt;
       
  2054 
       
  2055     CurrentTeam: PTeam;
       
  2056     PreviousTeam: PTeam;
       
  2057     CurrentHedgehog: PHedgehog;
       
  2058     TeamsArray: array[0..Pred(cMaxTeams)] of PTeam;
       
  2059     TeamsCount: Longword;
       
  2060     ClansArray: array[0..Pred(cMaxTeams)] of PClan;
       
  2061     ClansCount: Longword;
       
  2062     LocalClan: LongInt;  // last non-bot, non-extdriven clan
       
  2063     LocalTeam: LongInt;  // last non-bot, non-extdriven clan first team
       
  2064     LocalAmmo: LongInt;  // last non-bot, non-extdriven clan's first team's ammo index, updated to next upcoming hog for per-hog-ammo
       
  2065     CurMinAngle, CurMaxAngle: Longword;
       
  2066     GameOver: boolean;
       
  2067 
       
  2068     FollowGear: PGear;
       
  2069     WindBarWidth: LongInt;
       
  2070     bShowAmmoMenu: boolean;
       
  2071     bSelected: boolean;
       
  2072     bShowFinger: boolean;
       
  2073     Frames: Longword;
       
  2074     WaterColor, DeepWaterColor: TSDL_Color;
       
  2075     SkyOffset: LongInt;
       
  2076     HorizontOffset: LongInt;
       
  2077 {$IFDEF COUNTTICKS}
       
  2078     cntTicks: LongWord;
       
  2079 {$ENDIF}
       
  2080     cOffsetY: LongInt;
       
  2081     AFRToggle: Boolean;
       
  2082     bAFRRight: Boolean;
       
  2083 
       
  2084 
       
  2085     PixelFormat: PSDL_PixelFormat;
       
  2086     SDLPrimSurface: PSDL_Surface;
       
  2087     PauseTexture,
       
  2088     SyncTexture,
       
  2089     ConfirmTexture: PTexture;
       
  2090     cScaleFactor: GLfloat;
       
  2091     SupportNPOTT: Boolean;
       
  2092     Step: LongInt;
       
  2093     squaresize : LongInt;
       
  2094     numsquares : LongInt;
       
  2095     ProgrTex: PTexture;
       
  2096     MissionIcons: PSDL_Surface;
       
  2097     ropeIconTex: PTexture;
       
  2098     // orientation of the viewport
       
  2099     rotationQt: GLfloat;
       
  2100     // stereoscopic framebuffer and textures
       
  2101     framel, framer, depthl, depthr: GLuint;
       
  2102     texl, texr: GLuint;
       
  2103 
       
  2104 
       
  2105     VisualGearsList: PVisualGear;
       
  2106     lastVisualGearByUID: PVisualGear;
       
  2107     vobFrameTicks, vobFramesCount, vobCount: Longword;
       
  2108     vobVelocity, vobFallSpeed: LongInt;
       
  2109     vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword;
       
  2110     vobSDVelocity, vobSDFallSpeed: LongInt;
       
  2111 
       
  2112 
       
  2113     hideAmmoMenu: boolean;
       
  2114     wheelUp: boolean;
       
  2115     wheelDown: boolean;
       
  2116 
       
  2117     ControllerNumControllers: Integer;
       
  2118     ControllerEnabled: Integer;
       
  2119     ControllerNumAxes: array[0..5] of Integer;
       
  2120     //ControllerNumBalls: array[0..5] of Integer;
       
  2121     ControllerNumHats: array[0..5] of Integer;
       
  2122     ControllerNumButtons: array[0..5] of Integer;
       
  2123     ControllerAxes: array[0..5] of array[0..19] of Integer;
       
  2124     //ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer;
       
  2125     ControllerHats: array[0..5] of array[0..19] of Byte;
       
  2126     ControllerButtons: array[0..5] of array[0..19] of Byte;
       
  2127 
       
  2128     DefaultBinds, CurrentBinds: TBinds;
       
  2129 
       
  2130     coeff: LongInt;
       
  2131 
       
  2132 {$IFDEF HWLIBRARY}
       
  2133     leftClick: boolean;
       
  2134     middleClick: boolean;
       
  2135     rightClick: boolean;
       
  2136 
       
  2137     upKey: boolean;
       
  2138     downKey: boolean;
       
  2139     rightKey: boolean;
       
  2140     leftKey: boolean;
       
  2141     preciseKey: boolean;
       
  2142 
       
  2143     backspaceKey: boolean;
       
  2144     spaceKey: boolean;
       
  2145     enterKey: boolean;
       
  2146     tabKey: boolean;
       
  2147 
       
  2148     chatAction: boolean;
       
  2149     pauseAction: boolean;
       
  2150 {$ENDIF}
       
  2151 
       
  2152 var trammo:  array[TAmmoStrId] of ansistring;   // name of the weapon
       
  2153     trammoc: array[TAmmoStrId] of ansistring;   // caption of the weapon
       
  2154     trammod: array[TAmmoStrId] of ansistring;   // description of the weapon
       
  2155     trmsg:   array[TMsgStrId]  of ansistring;   // message of the event
       
  2156     trgoal:  array[TGoalStrId] of ansistring;   // message of the goal
       
  2157 
       
  2158 procedure initModule;
       
  2159 procedure freeModule;
       
  2160 
       
  2161 implementation
       
  2162 
       
  2163 
       
  2164 procedure initModule;
       
  2165 begin
       
  2166     lastVisualGearByUID:= nil;
       
  2167     lastGearByUID:= nil;
       
  2168     
       
  2169     Pathz:= cPathz;
       
  2170         {*  REFERENCE
       
  2171       4096 -> $FFFFF000
       
  2172       2048 -> $FFFFF800
       
  2173       1024 -> $FFFFFC00
       
  2174        512 -> $FFFFFE00  *}
       
  2175     if (cReducedQuality and rqLowRes) <> 0 then
       
  2176         begin
       
  2177         LAND_WIDTH:= 2048;
       
  2178         LAND_HEIGHT:= 1024;
       
  2179         LAND_WIDTH_MASK:= $FFFFF800;
       
  2180         LAND_HEIGHT_MASK:= $FFFFFC00;
       
  2181         end
       
  2182     else
       
  2183         begin
       
  2184         LAND_WIDTH:= 4096;
       
  2185         LAND_HEIGHT:= 2048;
       
  2186         LAND_WIDTH_MASK:= $FFFFF000;
       
  2187         LAND_HEIGHT_MASK:= $FFFFF800
       
  2188         end;
       
  2189 
       
  2190     SDWaterColorArray[0].r := 182;
       
  2191     SDWaterColorArray[0].g := 144;
       
  2192     SDWaterColorArray[0].b := 201;
       
  2193     SDWaterColorArray[0].a := 255;
       
  2194     SDWaterColorArray[2].r := 150;
       
  2195     SDWaterColorArray[2].g := 112;
       
  2196     SDWaterColorArray[2].b := 169;
       
  2197     SDWaterColorArray[2].a := 255;
       
  2198     SDWaterColorArray[1]:= SDWaterColorArray[0];
       
  2199     SDWaterColorArray[3]:= SDWaterColorArray[2];
       
  2200 
       
  2201     SDMusic:= 'main_theme.ogg';
       
  2202 
       
  2203     cDrownSpeed.QWordValue  := 257698038;       // 0.06
       
  2204     cDrownSpeedf            := 0.06;
       
  2205     cMaxWindSpeed.QWordValue:= 1073742;     // 0.00025
       
  2206     cWindSpeed.QWordValue   := 0;      // 0.0
       
  2207     cWindSpeedf             := 0.0;
       
  2208     cGravity                := cMaxWindSpeed * 2;
       
  2209     cGravityf               := 0.00025 * 2;
       
  2210     cDamageModifier         := _1;
       
  2211     TargetPoint             := cTargetPointRef;
       
  2212 
       
  2213     // int, longint longword and byte
       
  2214     CursorMovementX     := 0;
       
  2215     CursorMovementY     := 0;
       
  2216     GameTicks           := 0;
       
  2217     cWaterLine          := LAND_HEIGHT;
       
  2218     cGearScrEdgesDist   := 240;
       
  2219 
       
  2220     InputMask           := $FFFFFFFF;
       
  2221     GameFlags           := 0;
       
  2222     TurnTimeLeft        := 0;
       
  2223     cSuddenDTurns       := 15;
       
  2224     cDamagePercent      := 100;
       
  2225     cRopePercent        := 100;
       
  2226     cMineDudPercent     := 0;
       
  2227     cTemplateFilter     := 0;
       
  2228     cMapGen             := 0;   // MAPGEN_REGULAR
       
  2229     cMazeSize           := 0;
       
  2230     cHedgehogTurnTime   := 45000;
       
  2231     cMinesTime          := 3000;
       
  2232     cMaxAIThinkTime     := 9000;
       
  2233     cCloudsNumber       := 9;
       
  2234     cSDCloudsNumber     := 9;
       
  2235     cHealthCaseProb     := 35;
       
  2236     cHealthCaseAmount   := 25;
       
  2237     cWaterRise          := 47;
       
  2238     cHealthDecrease     := 5;
       
  2239 
       
  2240     cTagsMask       := 0;
       
  2241     InitStepsFlags  := 0;
       
  2242     RealTicks       := 0;
       
  2243     AttackBar       := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - from weapon
       
  2244     cCaseFactor     := 5;  {0..9}
       
  2245     cLandMines      := 4;
       
  2246     cExplosives     := 2;
       
  2247 
       
  2248     GameState       := Low(TGameState);
       
  2249     GameType        := gmtLocal;
       
  2250     zoom            := cDefaultZoomLevel;
       
  2251     ZoomValue       := cDefaultZoomLevel;
       
  2252     WeaponTooltipTex:= nil;
       
  2253     cLaserSighting  := false;
       
  2254     cVampiric       := false;
       
  2255     cArtillery      := false;
       
  2256     flagMakeCapture := false;
       
  2257     bBetweenTurns   := false;
       
  2258     bWaterRising    := false;
       
  2259     isCursorVisible := false;
       
  2260     isTerminated    := false;
       
  2261     isInLag         := false;
       
  2262     isPaused        := false;
       
  2263     isInMultiShoot  := false;
       
  2264     isSpeed         := false;
       
  2265     fastUntilLag    := false;
       
  2266     isFirstFrame    := true;
       
  2267     isSEBackup      := true;
       
  2268     cSeed           := '';
       
  2269     cVolumeDelta    := 0;
       
  2270     cHasFocus       := true;
       
  2271     cInactDelay     := 1250;
       
  2272     ReadyTimeLeft   := 0;
       
  2273     
       
  2274     disableLandBack := false;
       
  2275 
       
  2276     ScreenFade      := sfNone;
       
  2277 
       
  2278 {$IFDEF SDL13}
       
  2279     SDLwindow       := nil;
       
  2280 {$ENDIF}
       
  2281 
       
  2282     // those values still are not perfect
       
  2283     cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
       
  2284     cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
       
  2285     cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
       
  2286 
       
  2287     if isPhone() then
       
  2288         cMaxCaptions:= 3
       
  2289     else
       
  2290         cMaxCaptions:= 4;
       
  2291 
       
  2292     vobSDFrameTicks:= 0;
       
  2293     vobSDFramesCount:= 0;
       
  2294     vobSDCount:= 30 * cScreenSpace div LAND_WIDTH;
       
  2295     vobSDVelocity:= 0;
       
  2296     vobSDFallSpeed:= 0;
       
  2297 end;
       
  2298 
       
  2299 procedure freeModule;
       
  2300 begin
       
  2301     // re-init flags so they will always contain safe values
       
  2302     cScreenWidth    := 1024;
       
  2303     cScreenHeight   := 768;
       
  2304     cBits           := 32;
       
  2305     //ipcPort is in uIO
       
  2306     cFullScreen     := false;
       
  2307     isSoundEnabled  := true;
       
  2308     isMusicEnabled  := false;
       
  2309     cLocaleFName    := 'en.txt';
       
  2310     cInitVolume     := 100;
       
  2311     cTimerInterval  := 8;
       
  2312     PathPrefix := './';
       
  2313     cShowFPS        := false;
       
  2314     cAltDamage      := true;
       
  2315     cReducedQuality := rqNone;
       
  2316     //userNick is in uChat
       
  2317     recordFileName  := '';
       
  2318     cReadyDelay     := 5000;
       
  2319     cStereoMode     := smNone;
       
  2320 end;
       
  2321 
       
  2322 end.